Kaynaklarını kısmen buluta taşıyan firmalar, bildiğiniz üzere on-prem Active Directory kullanıcılarını da bu uygulamalara daha rahat erişmeleri için bulut ortamına senkronize ediyor. Bu senaryoda birçok kuruluş, kullanıcı kimlik bilgilerinin taşınması ve saklanması aşamalarından endişe duyuyor. Parola güvenliği ile ilgili “Parola nasıl buluta gönderiliyor”, “Nerede depolanıyor” gibi bir çok sorunun yanıtlanması gerekiyor. Verilerin transfer edilirken veya saklanırken geçtiği adımları bilmek bu konudaki endişeleri minimuma indirecektir.
Ben de buradan yola çıkarak hem password hash yöntemi hakkında yazmak hem de Azure AD Connect ile password hash ilişkisini ele almak istedim.
Password hash ile başlayacak olursak; Password Hash nasıl çalışır?
Parola Hash’leme işlemi aslında veriyi karmaşık hale getirmek için kullanılan matematiksel bir yöntemdir. Genellikle parolanızın network paketleri içerisinde yolculuk yapmasın ya da cihaz, şirket networkü veya kendi ekosisteminiz dışına çıkmasın istendiğinde kullanılan bir yöntemdir. Siz parolanızı girdikten sonra bir algoritma yardımı ile karmaşık bir değer haline gelir. Hash diye tabir ettiğimiz bu değer, veri tabanına parolanız yerine tanımlanır ve saklanır. Oturum açmak istediğinizde kullandığınız parolanız tekrar hash’lenir ve veri tabanına daha önce tanımlanmış hash ile karşılaştırılır. Böylece parolanızın kendisi herhangi bir veri tabanında saklanmadan veya network paketinde yer almadan oturum açma sürecini tamamlamış olursunuz.
Parolalar hash’lenirken aynı girdiler her zaman aynı çıktıları verir. Örneğin Tayfun1234 değeri MD5 algoritmasına göre hash’lenmiş hali her zaman şu şekildedir: d21e4f29d0e3bc8ebafb28fac5e4166c
Fakat bir karakterlik küçük bir değişiklik dahi çıktıyı tamamen başka bir hale dönüştürür. Örneğin: Tayfun1233 değeri MD5 ile hash’lendiğinde şu değer ortaya çıkıyor: 145d9ceb54c33a06ff57926ab78ff63b
Gördüğünüz gibi tek bir karakter tamamen farklı bir çıktıya yol açıyor.
Password hash tek taraflı bir yöntem olsa da aynı girdiler aynı çıktıları verdiği için bir noktada parolanızın tahmin edilebilmesi veya bunun için hazırlanmış saldırılar aracılılığıyla kırılması her zaman ihtimal dahlindedir. Eğer çok kullanılan veya basit bir parola kullanmışsanız bu parolanın hash’i de daha önce çok karşılaşılan bir hash olduğu için parolanızın decode edilmesi çok da zor olmayacaktır. Hatta bunun gibi çok bilinen parolaların hashlerini decode etmek için kullanılan web siteleri bile mevcut. Fakat sıra dışı ve karmaşık bir parola kullanıyorsanız sözlük veya kombinasyon saldırıları parolanızı kırmak, pahalı ve uzun süreli bir yöntem haline gelecektir. Her ne kadar parolanızın çalınması hala mümkün olsa da uzak ve küçük bir ihtimal haline gelecektir.
Bu ihtimali daha da minimize etmek ve özellikle deneme yanılmaya dayalı brute force atakların süresini uzatmak için birçok authentication servisi Salt yani Tuzlama yöntemini kullanıyor.
Tuzlama yönteminde, parolanız hash’lenip saklanmadan önce parolanızın sonuna rastgele birkaç karakter ekleniyor. Bu şekilde hash’lenen parola kırılması daha zor bir hale geliyor. Üstelik siz dahi hash’lenen parolanın yarısını biliyor oluyorsunuz. ? Aşağıdaki görselde tuzlama yönteminin adımlarına göz atabilirsiniz. Kullanıcı parolası Apple fakat parola hash’lenmeden önce sonuna yrtZd karakterleri ekleniyor. Sonrasında Hash ve Salt veri tabanına yazılıyor.
Salt yönteminin en önemli 3 faydası şunlardır;
1- Parolanın ve dolayısıyla hash’in karmaşıklık derecesini artırdığı için saldırganlar tarafından gerçekleştirilen brute force ataklar tahammül edilemeyecek kadar zaman alacaktır.
2- Hash bir şekilde ele geçirilse dahi saldırgan orjinal parolaya ulaşılamayacaktır.
3- Hash ele geçirilse bile bu hash üzerinden orijinal parolaya ulaşılamadığı için saldırgan bu hash’i aynı parolayı kullanan diğer kullanıcı hesapları ile ilişkilendiremez.
Bu yöntemi kullanırken Salt, parolanızın sonuna da başına da eklenebilir.
Saldırganlar için işi daha da içinden çıkılmayacak hale getirmek isterseniz menümüzde biber de bulunmakta. Pepper yani biber yönteminde Salt yöntemine çok benzer şekilde parolaya hash’lenmeden önce bir karakter ekleniyor. Fakat bu karakter Salt aksine veri tabanında saklanmıyor. Ne kullanıcı ne de veri tabanı bu gizli karakterden haberdar olmuyor. Gizli karakter yalnızca web sitesinin kaynak kodunda yer alıyor.
Örneğin parola Tayfun1234 ise sonuna M karakteri ekleniyor. Fakat bu M karakteri yani pepper veri tabanında saklanmadığı için sistem her oturum açmada büyük ve küçük harflerin hepsini tek tek deniyor. Aslında bir son kullanıcı için bu hissedilebilir çok uzun bir süre değil fakat farklı kombinasyonlar deneyen bir hacker için çok büyük bir zaman kaybı demektir.
Parola güvenliğini ideal hale getirmek için hash süreci Parola+Salt+Pepper şeklinde tasarlanmalı.
AZURE AD üzerinde Password hash’in rolü
Parola Hash’leme özelliği, lokal Active Directory dizininizi Bulut ortamına senkronize etmek için kullanılan Azure AD Connect uygulamasının bir özelliğidir. Kullanıcıların lokal uygulamalara ve Microsoft Bulut hizmetlerine aynı parola ile oturum açması hem kullanıcılar için bir konfor yaratır hem de helpdesk ekibinizin bu konuda harcayacağı eforu azaltır. Bunu sağlamak için Active Directory üzerinde bulunan kullanıcıların tümünü veya bir kısmını bulut ortamına senkronize etmeniz gerekir. Fakat “Directory sync” diye adlandırılan bu senkronizasyon esnasında kullanıcıların parolalarını öylece senkronize etmek ve bulut ortamında saklamak takdir edersiniz ki akıllıca bir yöntem değil. Bu nedenle Azure Active Directory Connect uygulamasını yapılandırırken “password hash” özelliğini aktif etmelisiniz.
Azure AD Connect Password hash süreci nasıl işler?
On-prem kullanıcıların parolalarını bulut ortamına senkronize ederken başrolü Sync Engine yani AD Connect oynar. AD Connect, ortamda bulunan Domain Controller’a (DC) bir replikasyon talebi gönderir. DC, bu talebi eski bir yöntem olan MD4 ile şifrelenmiş bir hash şeklinde yanıtlar. Kullanıcı bilgilerini alan Sync Engine, bu veriyi daha modern bir yöntem ile şifreleyerek hash değerini üretir.
DC’den aldığı veriyi 64 byte’lık bir değere dönüştürtürdükten sonra 10 byte’lık bir salt ekler. Elde ettiği bu değeri ise PBKDF2, HMAC SHA 256 gibi şifreleme yöntemleri ile tekrar hash eder ve 32 byte’lık bir veri ortaya çıkar.
Özetle AD Connect sizin parolanızı Ali Candan olarak alıp Polat Alemdar haline getiriyor ? Unutmayın hash de tek yönlü bir işlemdir, Polat’ı tekrar Ali yapamazsınız sadece Polat geldiğinde onun Ali olduğunu bilirsiniz.
Daha sonra AD Connect, üzerine son düşen görevi de yaparak, bu veriyi yani parolanızın hash’lenmiş halini SSL kullanarak Azure Active Directory’ye gönderir. Parolanızın hash’i burada storage bazında da şifrelenerek (bitlocker) depolanır.
Peki, Azure AD Connect üzerinde Password hash nasıl aktif ederiz?
AD Connect kurulumu yaparken User sign-in bölümünde Password Hash Synchronization seçeneğini işaretlemeniz yeterli olacaktır.
Umarım Azure AD Connect ve parola güvenliği ile ilgili aydınlatıcı bir içerik olmuştur. Eğer bu konuyla ilgili bir sorunuz olursa yorum kısmından paylaşabilirsiniz.