Archive for May, 2011

Web’ten Active Directory’deki Kullanıcı ve Bilgisayar hesaplarını Enable/Disable yapılması (ASP ile)

Aşağıda ve linkte bulunan asp kodları/dosyası ile, Active Directory’deki kullanıcı ve bilgisayar hesapları arasında arama yapabilir, nesnelerin Active Directory içerisindeki yerini öğrenebilir ve kullanıcı ve bilgisayar hesaplarını kapatıp açabilirsiniz. Kapatılan kulanıcı ve bilgisayar hesaplarını istediğiniz OU’da toplayabilir veya açtıklarınızı istediğiniz OU ya taşıyabilirsiniz.

Bu ASP dosyasını çalışabilmesi yayınladığınız web sitesi için IIS yapılacak tek ayar ise ; web site’ın authentication method’unu Basic authentication yapmak, böylece yetkisiz kullanıcılar Active Directory’de arama yapabilecekler fakat, enable/disable veya nesne taşıması yapamıyacaklar.

 

Dosyayi buradan indirebilirsiniz

Kaynak : http://www.emrullahekmekci.com.tr/?p=379

 

<%

‘    10 / 05 /2011 — Emrullah Tahir Ekmekçi
‘    Kullanici ve Bilgisayar hesaplarinin web üzerinden Enable/Disable yapilmasi
‘    1.0

response.charset=”windows-1254″
Response.CacheControl = “no-cache”
response.Clear()
%>

<title>Kullanici/Bilgisayar hesabi arama/acma/kapatma</title>
<body>
<br>
<br>

<center><form id=”form1″ name=”form1″ method=”post” action=”ADAramaAcmaKapama.asp”>
<label>Nesne adi
<input name=”is” type=”hidden” value=”is” /><input type=”text” name=”uname” id=”uname” />
</label>
</form></center>

</body>
</html>

<%

Dim strCN, objRootDSE, strDNSDomain, adoCommand, adoConnection
Dim strBase, strFilter, strAttributes, strQuery, adoRecordset
Dim strDN, strDisplay, strObjectCategory, intIndex

‘ Kullanici ve Bilgisayar hesabi acma ve kapatma

if request(“hesap”)  <> “” and request(“y”)  <> “” and request(“t”) <> “” then

strCN = request(“hesap”)
ka = request(“y”)

Set objRootDSE = GetObject(“LDAP://RootDSE”)

strDNSDomain = objRootDSE.Get(“defaultNamingContext”)

Set adoCommand = CreateObject(“ADODB.Command”)
Set adoConnection = CreateObject(“ADODB.Connection”)

adoConnection.Provider = “ADsDSOObject”
adoConnection.Open “Active Directory Provider”
adoCommand.ActiveConnection = adoConnection

strBase = “<LDAP://” & strDNSDomain & “>”

strFilter = “(cn=” & strCN & “*)”

strAttributes = “cn,distinguishedName,sAMAccountName,name,userAccountControl”

strQuery = strBase & “;” & strFilter & “;” & strAttributes & “;subtree”
adoCommand.CommandText = strQuery
adoCommand.Properties(“Page Size”) = 100
adoCommand.Properties(“Timeout”) = 30
adoCommand.Properties(“Cache Results”) = False

Set adoRecordset = adoCommand.Execute

Const ADS_UF_ACCOUNTDISABLE = 2

Set objUser = GetObject (“LDAP://” & adoRecordset.Fields(“distinguishedName”))

strOUDN = “OU=DisabledComputers,DC=fabrikam,DC=com”    ‘ Kapatilan Bilgisayar Hesaplarinin tasinacagi OU
strOUDNE = “CN=Computers,DC=fabrikam,DC=com” ‘ Açilan Bilgisayar Hesaplarinin tasinacagi OU

strOUDNU = “OU=DisabledComputers,DC=fabrikam,DC=com”     ‘Kapatilan kullanici Hesaplarinin tasinacagi OU
strOUDNEU = “CN=Users,DC=fabrikami,DC=com” ‘ Açilan Bilgisayar Hesaplarinin tasinacagi OU

intUAC = objUser.Get(“userAccountControl”)

if ka = “k” then

if request(“t”) = “u” then
Set objOU = GetObject(“LDAP://” & strOUDNU)
objUser.Put “userAccountControl”, intUAC OR ADS_UF_ACCOUNTDISABLE ‘ kullanici hesabi kapatiliyor
objUser.SetInfo
objOU.movehere objUser.ADsPath, objUser.name ‘ kullanici hesabi tasiniyor
end if

if request(“t”) = “b” then

Set objOU = GetObject(“LDAP://” & strOUDN)
objUser.accountdisabled = true ‘ bilgisayar hesabi kapatiliyor
objUser.SetInfo
objOU.movehere objUser.ADsPath, objUser.name ‘ bilgisayar hesabi tasiniyor
end if

response.write “Hesap Kapatildi”
elseif ka = “a” then

if request(“t”) = “u” then
Set objOU = GetObject(“LDAP://” & strOUDNEU)
objUser.Put “userAccountControl”, intUAC XOR ADS_UF_ACCOUNTDISABLE ‘ kullanici hesabi açiliyor
objUser.SetInfo
objOU.movehere objUser.ADsPath, objUser.name ‘ bilgisayar hesabi kapatiliyor
end if

if request(“t”) = “b” then

Set objOU = GetObject(“LDAP://” & strOUDNE)
objUser.accountdisabled = false ‘ bilgisayar hesabi açiliyor
objUser.SetInfo
objOU.movehere objUser.ADsPath, objUser.name ‘bilgisayar hesabi tasiniyor
end if

response.write “Hesap Acildi”
end if

response.Redirect “ADAramaAcmaKapama.asp?uname=”&request(“hesap”)&”&is=1″

adoRecordset.Close

response.End()
end if

‘ AD’de nesene aramari
if request(“uname”) = “” and request(“is”) <> “” then

%><p><b><center>Nesneyi bos gecmeyin lütfen.</center></b></font></p><%
elseif request(“uname”) <> “” and request(“is”) <> “” then

strCN = request(“uname”) & “*”

if len(strCN) <4 then
response.Clear()
Response.Write(“en az 3 karakter girmelisiniz.”)
Response.end
end if

Set objRootDSE = GetObject(“LDAP://RootDSE”)

strDNSDomain = objRootDSE.Get(“defaultNamingContext”)

Set adoCommand = CreateObject(“ADODB.Command”)
Set adoConnection = CreateObject(“ADODB.Connection”)

adoConnection.Provider = “ADsDSOObject”
adoConnection.Open “Active Directory Provider”
adoCommand.ActiveConnection = adoConnection

strBase = “<LDAP://” & strDNSDomain & “>”

strFilter = “(cn=” & strCN & “)”

strAttributes = “cn,distinguishedName,sAMAccountName,name,userAccountControl”

strQuery = strBase & “;” & strFilter & “;” & strAttributes & “;subtree”
adoCommand.CommandText = strQuery
adoCommand.Properties(“Page Size”) = 100
adoCommand.Properties(“Timeout”) = 30
adoCommand.Properties(“Cache Results”) = False

Set adoRecordset = adoCommand.Execute

If (adoRecordset.EOF = True) Then
Response.Write(“<center>Aradiginiz kriterde kayit bulunamadi</center>”)
Response.end
End If

‘ AD nesnelerinin gösterilecegi tablo olusturuluyor.
Response.Write(“<table width=100% height=100% ><tr width=100% height=100% ><td width=100% height=100% align=center valign=center><table border=’1′>”)
Response.Write(“<tr><th> Hesap adi </th><th> Bilgisayar/Kullanici Adi </th><th> Durum </th><th> Tipi </th><th> AD Yeri </th></tr>”)
Response.Write(“<font size=-3>”)

Do Until adoRecordset.EOF

vSAMAccountName= adoRecordset.Fields(“sAMAccountName”).Value
vName = adoRecordset.Fields(“name”).Value
vUserAccountControl= adoRecordset.Fields(“userAccountControl”).Value
vDistinguishedName= adoRecordset.Fields(“distinguishedName”).Value
AKR = 0
if vUserAccountControl = 512 then
AKR = 1
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vSAMAccountName&”&y=k&t=u’ title=’Kapatmak için tiklayin’><center> Kapat</center> </a>”
elseif vUserAccountControl = 514  then
AKR = 0
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vSAMAccountName&”&y=a&t=u’ title=’Açmak için tiklayin’><center> Aç </center></a>”
elseif vUserAccountControl = 544  then
AKR = 1
vUserAccountControlDesc =  “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vSAMAccountName&”&y=k&t=u’ title=’Kapatmak için tiklayin’><center> Kapat/ilsd </center></a>”
elseif vUserAccountControl = 66048  then
AKR = 1
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vSAMAccountName&”&y=k&t=u’ title=’Kapatmak için tiklayin’><center> Kapat/s </center></a>”
elseif vUserAccountControl = 66050  then
AKR = 0
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vSAMAccountName&”&y=a&t=u’ title=’Açmak için tiklayin’><center> Aç/s </center></a>”
elseif vUserAccountControl = 4096  then
AKR = 1
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vName&”&y=k&t=b’ title=’Kapatmak için tiklayin’><center> Kapat </center></a>”
elseif vUserAccountControl = 4128  then
AKR = 1
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vName&”&y=k&t=b’ title=’Kapatmak için tiklayin’><center> Kapat </center></a>”
elseif vUserAccountControl = 4098  then
AKR = 0
vUserAccountControlDesc = “<a href=’./ADAramaAcmaKapama.asp?hesap=”&vName&”&y=a&t=b’ title=’Açmak için tiklayin’><center> Aç </center></a>”
else

vUserAccountControlDesc = vUserAccountControl
end if

cuc = instr (vSAMAccountName,”$”) ‘ Nesnin Bilgisayar hesabini oldugunu belirten “$” karakteri kontrolu yapiliyor
if vUserAccountControl <> “” then

if cuc = 0 then Response.Write(“<tr><td> ” & vSAMAccountName & ” </td>”) else  Response.Write(“<tr><td></td>”)

if AKR = 0 then
response.write (“<td style=’background-color: #FF0000′> “&vName&” </td>”)
else
response.write (“<td style=’background-color: #00FF00′> “&vName&” </td>”)
end if

if cuc = 0 then

Response.Write(“<td style=’background-color: #667C26′>” & ” Kullanici ” & “</td>”)
else

Response.Write(“<td style=’background-color: #4863A0’>”& ” Bilgisayar ” & “</td>”)
end if

Response.Write(“<td>” & vUserAccountControlDesc & ” </td>”)

Response.Write(“<td align=right > ” & vDistinguishedName & ” </td>”)
else

end if

Response.Write(“</td></tr>”)

adoRecordset.MoveNext
strDisplay = 1

Loop

adoRecordset.Close

if strDisplay = “” then Response.Write(“Arama yapilamadi      —” & strDisplay & “—“)

adoConnection.Close

Response.Write(“</font>”)
Response.Write(“</table></td></tr></table>”)
Response.Write(“<br><align=left>Note :<br>Acik/ilsd = Ilk logon’da sifre degistirilecek<br>Acik/s = Süresis sifre<br>Kapali/s = Süresis sifre<br><br><br><br>”)

Response.End()
end if%>

 

Leave a comment

Active Directory'deki Bilgisayar hesaplarının en son Logon zamanının alınması/listelenmesi (VBA, windows script)

Geçtiğimiz hafta, Active Diretory’de aktif olmayan (kullanılmayan) bilgisayar hesaplarının listesine ihtiyacım oldu. Bu bilgiyi Active Directory’den almak için çeşitli yollar kullanabilirdim fakat bunların bir çoğu oldukça meşakatli.

İnternette bu işlem için çeşitli Windows Script’ler var, ama hangisini ve nasıl kullancağım ? Üstelik elde ettiğim sonuçları text yada csv dosyasına nasıl aktaracağım ?

Sonuç olarak aşağıda linki bulunan uygulamayı geliştirdim (vba içerisinde windows script kullandım).

Bu uygulamada, ihtiyaç duyulabilecek basit 1 -2 seçenek ekleyerek kullanılabilirliğini de artırdım. Örneğin, bulunacak bilgisayarlar için zaman aralığı (son XX gündür logon olmayan bilgisayarlar) girilebiliyor ve bu bilgisayarları Active Diretory’de DN olarak belirttiğiniz yere taşıyabiliyor. Ayrıca Bilgisayar hesabının adını, son logon zamanını ve DN ini text dosyası olarak alabiliyorsunuz. (csv uyumlu, böylece excel’e kolaylıkla aktarabilirsiniz.)

 

Uygulamayı buradan indirebilirsiniz.

Not: Zip dosyasının şifresi “ete”

 

kaynak : http://www.emrullahekmekci.com.tr/2011/05/04/active-directorydeki-bilgisayar-hesaplarinin-en-son-logon-zamaninin-alinmasilistelenmesi-vba-windows-script/

 

 

Leave a comment

Dışkaynak kullanımı hakkında

Kurumlar, BT ihtiyaçları için kendi bünyelerinde kaynak barındırmak yerine dışkaynak kullanarak maliyetlerini optimize ediyorlar. Burada kullanılan dış kaynakların yönetimini yapabilmeleri aldıkları hizmetlerin doğruluğunu belirleyen en önemli etmenlerden biridir. BT ile alakalı dışkaynak kullanımı, ihtiyaça göre odaklanmış hizmetlerin direk olarak alınabilmesini mümkün kıldığından bütün kurumlar için çok önemlidir. Ancak alınan hizmetlerin doğruluğunun kontrolünün yapılması özellikle BT ile alakalı hizmetlerde kritik rol oynamaktadır. Bulut bilişim, SaaS gibi trend olan konuların konuşulduğu, uygulandığı bir dönemdeyiz. Alınan bir hizmetin yada yapılan bir işin doğru şekilde yapılması sonradan meydana gelebilecek/oluşabilecek problemlerin engellenmesini sağlayabilir.

 

– Dışkaynak seçimi ve yönetiminde başarıya ulaşmak için nelere dikkat edilmeli, neler yapılmamalıdır, bu doğrultuda püf noktaları nelerdir?

Dışkaynak seçiminde hizmeti sağlayacak olan firmanın bu konuda yaptığı çalışmalar, yatırımlar, yeterliliği ve tecrübeleri en önemli unsurlardır diye düşünüyorum. Dışkaynak seçiminde en önemli noktalardan bir tanesi 3. bir göz kullanarak yapılan işlerin doğruluğunun kontrol ettirilmesi. Dışkaynak hizmeti almadan önce hizmet içeriğinin belirlenmesi, gerekiyorsa bu konu için dışarıdan danışmanlık alınması bir diğer önemli husustur. Kurumların kendi bünyelerinde bulunan kaynaklar ile yaptırdıkları işleri, bunun da ötesinde gene dışkaynak kullanarak yaptırdıkları işleri güvenilir 3. bir göz ile kontrol ettirmeleri bunun içinde dışkaynak kullanmaları güvenlik açısından önemli bir unsurdur.

 

– Dışkaynak kullanımında ve yönetiminde dünyada ve Türkiye’de son eğilimler nelerdir? Bu konuda gelecek öngörülerinizi de paylaşabilir misiniz?

Dışkaynak kullanımı Türkiye de de gün geçtikçe daha fazla yaygınlaşmakta. Gelecekte de daha fazla tercih edilen, kullanılan bir hizmet şekli olacak. Dünyada da, Türkiye’de de ‘Bulut bilişim, SaaS’ gibi servisler/hizmetler gelecekte daha fazla önem kazanacak. Günümüzde en önemli unsur veriye her yerden kolayca, güvenli bir şekilde erişmek; bu da bulut bilişim ile tam anlamıyla mümkün oluyor.

 

,

Leave a comment