Exchange Server reCAPTCHA Uygulaması

Exchange Server için ECP’yi kapatabiliyoruz, fakat kullanıcılarımızın iş sürekliliği için OWA bağlantıları sürekli dışarıya açık ve brute force atak yemeleri için müsait. Eğer ortamınız da bulunan Exchange Server için OWA bağlantılarınız ALL olarak açık ise burası ek önlemler almanız gerekmektedir.

Ortamınızda bulunan Exchange Server OWA güvenliği için WAF, IPS kullanmıyorsanız veya third party bir uygulama ile MFA kullanmıyorsanız, OWA girişine Google reCAPTCHA ekleyebilirsiniz.

Exchange Server OWA Üzerinde Brute Force Saldırıları Nasıl İşler

Spry veya Brute Force saldırıları sırasında, hedef sunucuya otomatik bir POST isteği gönderilir, bu doğru parola bulunana kadar devam etmektedir. Siz OWA sayfanıza reCAPTCHA ekleyerek aslında kısmi olarak saldırının arkasında yapılandırmayı engelleyebilirsiniz.

Aslında çok önerilen bir yöntem değildir benim gözümde reCAPTCHA işi yavaşlatan, insan zamanını çalan bir uygulamadır. Bütçeniz bulunuyorsa WAF,IPS,MFA veya Passwordless çözümlere bakabilirsiniz.
reCAPTCHA kullanımı sırasında, XMLHTTPRequest istekleri Google'a gönderilir ve "SAMEORIGINPOLICY" denilen bir güvenlik protokolü tarafından istekler reddedilebilir. Bunun için ortamınıza özel bir Proxy kurmanız gerekebilir, bu proxy için ek bir FBA oluşturmanız gerekebilir. 

Ben burda işlemin nasıl çalıştığını göstermek istediğim için ek bir Proxy ve FBA adımlarına değinmeyeceğim.

Exchange Server OWA Üzerinde reCAPTCHA Nasıl Eklenilir

Öncelikle reCAPTCHA (google.com) adresinden size özel bir anahtar üretmeniz gerekmektedir. Sayfa görünümü aşağıdaki gibidir;

Etiket bölümüne proje ismi girmeniz gerekiyor.

reCAPTCHA türü belirlemeniz gerekiyor, ben bu projede reCAPTCHA s2 – Ben Robot Değilim işlemini seçtim.

Alan adı bölümünde ise reCAPTCHA‘yı kullanacağınız adları seçmeniz gerekmektedir, ben lab ortamı içerisindede kullanacağım için “localhost” olarak ekleme yaptım.

Sahipler bölümünde ise bu proje için yönetici olmasını istediğiniz adresleri ekleyebiliyorsunuz.

En son adımda ise gizlilik sözleşmesini kabul ediyoruz ve isteğe bağlı olarak “Site sahiplerine uyarı gönder” tikini işaretleyebilirsiniz. Sitenizde oluşan olumsuz bilgileri size mail olarak gönderecektir.

Gerekli bilgileri girdikten sonra, ikinci adımda bize 2 adet özel key vermektedir.

Anahtarları ürettikten sonra recaptcha.aspx adında bir dosya oluşturmamız gerekmektedir, ilgili dosyayı aşağıdaki yola oluşturmamız gerekiyor.

C:\Program Files\Microsoft\Exchange Server\V15\FrontEnd\HttpProxy\owa\auth

Secret Key bölümüne üretmiş olduğumuz Secret Key bilgisini girmemiz gerekiyor.

<% @ Page AspCompat=True Language = "VB" %>
<%
' Put your own private key in the next line
Dim strPrivateKey As String = "Secret Key"
Dim strResponse = Request("response")
Dim objWinHTTP As Object
objWinHTTP = Server.CreateObject("WinHTTP.WinHTTPRequest.5.1")
objWinHTTP.Open("POST", "https://www.google.com/recaptcha/api/siteverify", False)
objWinHTTP.SetRequestHeader("Content-type", "application/x-www-form-urlencoded")
Dim strData As String = "secret=" & strPrivateKey & _
"&response=" & strResponse
objWinHTTP.Send(strData)
Dim strResponseText = objWinHTTP.ResponseText
Response.Write(strResponseText)
%>

Recaptcha.aspx dosyamı kaydettiğim zaman ilgili klasör aşağıdaki gibi gözükmektedir.

Daha sonra logon.aspx dosyası üzerinde bir düzenleme yapacağız. Bu düzenlemede bulunan adımları size satır numaraları ile belirteceğim.

Öncelikle logon.aspx dosyası içerisinde 197.satırda bulunan satırı değiştirmemiz gerekiyor.

<form action="/owa/auth.owa" method="POST" name="logonForm" ENCTYPE="application/x-www-form-urlencoded" autocomplete="off">

Değiştirilmesi gereken satır;

<form action="" method="POST" name="logonForm" ENCTYPE="application/x-www-form-urlencoded" autocomplete="off">

Sonra 231.satırda bunan dizenin altına eklememiz gereken bir satır bulunmaktadır;

<div><input id="passwordText" onfocus="g_fFcs=0" name="passwordText" value="" style="display: none;" class="signInInputText" aria-labelledby="passwordLabel"/></div>

Bu satırın altına aşağıdaki satırları ekliyoruz ve site key bilgisini giriyoruz.

<tr>
<td>
<script type="text/javascript">
function myClkLgn()
{
var oReq = new XMLHttpRequest();
var sResponse = document.getElementById("g-recaptcha-response").value;
var sData = "response=" + sResponse;
oReq.open("GET", "/owa/auth/recaptcha.aspx?" + sData, false);
oReq.send(sData);
if (oReq.responseText.indexOf("true") != -1)
{
document.forms[0].action = "/owa/auth.owa";
clkLgn();
}
else
{
alert("reCAPTCHA gecersiz" + "\n" +"reCAPTCHA dogrulanamadi");
}
}
</script>
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
<div class="g-recaptcha" data-sitekey="Buraya Site Key Gelecek
"></div>
</td>
</tr>

Bu işlemlerden sonra IISRESET yapmamız gerekmektedir.

Daha sonra OWA sayfasına geliyorum.

Exchange Server update işleminden sonra bu adımları tekrar yapmanız gerekmektedir, Exchange Server update sırasında bu dosyaları default olarak değiştirmektedir.

Yorum yapın