Kategori arşivi: Windows Server

RDP Atakları için Bilinen Kötü IP Adresleri

Bundan 5 ay önce aşağıdaki gibi bir makale yazmıştım. Amacım RDP tarafındaki tehlike konusunda farkındalık oluşturmaktı. Her ne kadar uyarı yapsakta insanların çok ciddi manada hala dışarıya açık RDP portlarının olduğunu gördüğüm için en azından basit bir kaç adım ile bunları nasıl koruyacaklarını anlattım. Fakat bu makale için kurduğum makine ilginç bir şekilde bu güne kadar kapanmadı, yani daha doğrusu yem olarak makineyi açık bıraktım ve ısrarla atak yapıldığını gördüm. 2 Kasım 2019 itibari ile bu rakam 6257 oldu. Yani 5 ayda 6257 “farklı” ip adresinden RDP portum için şifre denemeleri yapılıyor.

Aslında bunu ara ara twitter hesabımdan ( https://twitter.com/hakanuzuner ) paylaştım. Bunu gören bazı arkadaşlarım bana bu ip adreslerini neden paylaşmıyorsun dedi? Süper fikir dedim ve aşağıdaki gibi basit iki Powershell komutu ile bu ip adreslerini aldım. Bunu düzenli aralıklar ile güncellemeye karar verdim. İlk sürüm bu postum ile beraber sizlerle.

Önce kuralda tanımlı ip adreslerini görebilirsiniz

Get-NetFirewallRule -DisplayName “Block RDP Attackers” | Get-NetFirewallAddressFilter

Tabi bunun pek bir anlamı yok, çünkü bize ip adresleri lazım, madem öyle komutu şu şekilde geliştiriyoruz

Get-NetFirewallRule -displayname “Block RDP Attackers” | Get-NetFirewallAddressFilter | select -ExpandProperty RemoteAddress > c:\komut\badip.txt

Ve karşınızda tüm ip adreslerini görebiliyorsunuz.

Dosyaya aşağıdaki link üzerinden ulaşabilirsiniz.

Windows Update Sorun Çözümü

Microsoft sistemleri başta olmak üzere yama yönetimi son derece önemlidir. Ancak her yama da beraberinde sağlıklı çalışan sistemlerin sorunla karşılaşmasına neden olabilir. Bir nevi ne yamasız ne de yama ile aslında işler çok yolunda olmayabilir. Ama tabi ki biz sistem yöneticilerinin sorumluluğu pilot deployment dediğimiz yöntem ile küçük ölçekli dağıtımlar yaparak yamaların sorunsuz olduğunu tespit ettikten sonra güncelleme işlemlerini yaygınlaştırmaktır.

Ancak her ne kadar bu işlere dikkat edersek edelim bazen bazı sunucularda bu işin ucunu kaçırabiliyoruz. Hele benim gibi bir danışman ise ne yazık ki hep ipin ucu kaçmış sunucular için size case açarlar.

Tabiki ben daha çok sunucu sistemleri için danışmanlık verdiğimden çözümlerim bu noktada olsa da Windows 10 olmak üzere aslında benzer mimari kullanıldığı için Windows 10 sorunlarında da aynı yöntemleri izleyebilirsiniz.

Öncelikle klasik hata ekranlarındaki kodu google’ a yazıp önerileri yerine getirebilirsiniz, bu en bilinen yöntem ve genelde çok bilinen sorunlar için işe yaradığından başarılıdır, ancak zorlu sorunlar için biraz farklı yerlere bakmak lazım.

Windows Update sorunları için kontrol edilmesi gereken en kritik log dosyası CBS olup konumu aşağıdaki gibidir;

C:\Windows\Logs\CBS\CBS.log

Özellikle eksik yama olan sunucu veya istemci sistemlerinde yüklemeye çalıştığınız ama hata aldığınız yamanın hangi yamaya ihtiyacı olduğunu aşağıdaki gibi satırlardan kontrol edebilirsiniz;

CBS    Plan: Start to process package watchlist.

CBS    Exec: Package: Package_997_for_KB4520005~31bf3856ad364e35~amd64~~6.3.1.11 is already in the correct state, current: Installed, targeted: Installed

CBS    Exec: Skipping Package: Package_997_for_KB4520005~31bf3856ad364e35~amd64~~6.3.1.11, Update: 4520005-1559_neutral_GDR because it is already in the correct state.

CBS    Exec: Skipping Package: Package_997_for_KB4520005~31bf3856ad364e35~amd64~~6.3.1.11, Update: 4520005-1560_neutral_GDR because it is already in the correct state.

CBS    Store corruption, manifest missing for package: Package_68_for_KB4516067~31bf3856ad364e35~amd64~~6.3.1.8

CBS    Failed to resolve package ‘Package_68_for_KB4516067~31bf3856ad364e35~amd64~~6.3.1.8’ [HRESULT = 0x800f0831 – CBS_E_STORE_CORRUPTION]

CBS    Mark store corruption flag because of package: Package_68_for_KB4516067~31bf3856ad364e35~amd64~~6.3.1.8. [HRESULT = 0x800f0831 – CBS_E_STORE_CORRUPTION]

CBS    Failed to resolve package [HRESULT = 0x800f0831 – CBS_E_STORE_CORRUPTION]

CBS    Failed to get next package to re-evaluate [HRESULT = 0x800f0831 – CBS_E_STORE_CORRUPTION]

CBS    Failed to process component watch list. [HRESULT = 0x800f0831 – CBS_E_STORE_CORRUPTION]

CBS    Perf: InstallUninstallChain complete.

Burada arayacağınız anahtar kelime “CBS_E_STORE_CORRUPTION” olup bunun ön planındaki KB kodundan eksik olan yamayı bulup yüklemeyi deneyebilirsiniz. Örneğin benim sorun yaşadığım müşteride 10 ayda iken 7. Ayın yamasına kadar geri dönmek zorunda kaldım. Sonra sırası ile diğer yamaları yükledim.

Bu arada bu işi çözemeyebilirsiniz, bazen o kadar sorunlu işletim sistemleri oluyor ki onları yeni kurmak en temizi, yani bu yama zincirini bir kere kaybederseniz bir daha toparlamanız çok zordur.

Ayrıca sorunlu bir bilgisayara bağlanırsanız bu log dosyasının sürekli yama yüklemeyi denemesi ama yüklenememesi nedeni ile ciddi şiştiğini, hatta bu nedenle notepad ile açılmadığını görebilirsin. Örneğin benim müşteri makinesinde bu lof 47GB olmuştu, aşağıdaki PS komutu ile bu log dosyasını silip öyle işlemlere başlamanızı öneririm. Ya da tek tek loglardan eksik yamaları bulmanızı ama eski loglar sizi çok yorabilir, tek tek yamaları denemek de ayrı zaman. Karar sizin.

Stop-Service TrustedInstaller
Remove-Item -Path C:\Windows\Logs\CBS\CBS.log
Start-Service TrustedInstaller

Küçük ama faydalı bir bilgi olmuştur.

Tüm Kullanıcıların Şifrelerini Değiştirmeye Zorlanması

ÇözümPark forumlarında sık sorulan soruları kendi blog sayfamda hızlıca ipucu olarak yayınlıyorum. Bu yazımda aynı amaç için hazırlanmıştır.

Tek bir kullanıcı için

Set-ADUser -Identity -ChangePasswordAtLogon $true

OU bazlı

Import-Module ActiveDirectory
Get-ADUser -Filter * -SearchBase “OU=TestOU,DC=TestDomain,DC=Local” | Set-ADUser -ChangePasswordAtLogon:$True

Departman bazlı, tabi bunun için kullanıcılarının departman tanımları önceden yapılmış olmalı
Import-Module ActiveDirectory
Get-ADUser -Filter ‘department -like “Admin“‘ | Set-ADUser -ChangePasswordAtLogon:$True

Toplu yapmak için ekteki gibi excel’ i doldurursanız veya bunu export ederseniz aşağıdaki PS kullanabilirsiniz

Import-Module ActiveDirectory
Import-Csv “C:\Scripts\ADUsers.csv” | ForEach-Object {$samAccountName =$_.”samAccountName” Get-ADUser -Identity $samAccountName | Set-ADUser -ChangePasswordAtLogon:$True}

Belirli bir grup üyeliği için yapmak istiyorsanız aşağıdaki kodu deneyebilirsiniz

Import-Module ActiveDirectory
Get-ADGroupMember -Identity “TestGroup” |Set-ADUser -ChangePasswordAtLogon:$True

Umarım faydalı olmuştur.

RDS Farm İçerisindeki Session Host Sunucularını Bakım Moduna Alma – Maintenance mode for RDS Session Host Servers

Birden çok Session Host sunucusu olan bir ortamda genelde iş ihtiyaçları nedeni ile connection broker veya NLB gibi cihazlar olabilir. Eğer ortamınızda yük dengeleme ve benzeri iş ihtiyaçları için bir NLB kullanıyorsanız aynı bir web server, Exchange Server, SMTP server veya aklınıza gelebilecek diğer iş yüklerinde olduğu gibi NLB üzerinden ilgili sunucuyu bakım moduna alabilirsiniz. Pek çok farklı NLB üreticisi olsa da benzer şekilde kolayca bu ayarları yapabilirsiniz.
Ancak Microsoft RDS Farm yapılarında genelde yük dengelemek için Connection Broker sunucuları kullanılır. Hatta yapı büyük ve kesintisizlik esas ise bu durumda birden çok CB sunucu HA olarak ortak bir SQL ile cluster çalışacak şekilde kurulabilir. İster CB tek olsun ister HA mutlaka arkasında çalışan session host olarak isimlendirdiğimiz ve aslında oturum veya uygulama sanallaştırdığımız sunucuların bakım moduna alınması gerekebilir. Yama yükleme, bakım işlemleri, yedekleme, sorun çözümü veya pek çok farklı iş ihtiyacı olabilir. Hatta mevcut bir ortama yeni aldığınız sunucuda sorun tespit ettiğiniz anda dahi artık bu sunucuya yeni bir bağlantı gelmeyecek şekilde ayarlamak temel bir iş ihtiyacıdır.


Sebebi her ne olur ise olsun böyle bir iş ihtiyacınız var ise yöntem aşağıdaki gibidir;
Öncelikle server manager üzerinden Remote Desktop Services bölümüne geliyoruz;

Daha sonra bakım moduna alacağımız sunucu hangi collection’ da ise onu seçiyoruz.

Daha sonra Host Servers bölümünden bakım moduna almak istediğimiz sunucuyu seçip sağ tıklıyoruz ve “Do not allow new connections” bölümüne tıklıyoruz.

Kısa bir süre sonra artık bu RDS sunucusunun yeni bağlantı kabul etmediğini göreceksiniz. Mevcut kullanıcıları yine hemen aynı bölümdeki sağ tarafta log off edebileceğiniz gibi bunun için powershell de kullanabilirsiniz.
https://blog.ipswitch.com/how-to-log-off-windows-users-remotely-with-powershell
Bakım modundan çıkarmak için tekrar sunucu üzerine sağ tıklayıp bu sefer bağlantılara izin vermeniz yeterli.
Umarım faydalı bir ip ucu olmuştur. Bir sonraki blog yazımda görüşmek üzere.

Güvenlik Seviyenizi Düşürmeden RDS Ortamlarınızda Şifre Değişikliklerini RDWeb Üzerinden Yapın

Windows Server 2012 R2 / 2016 / 2019 gibi yeni nesil işletim sistemlerinde ve yine Windows 8.1 sonrasındaki istemci makinelerde varsayılan olarak uzak erişim için NLA (Network Level Authentication) açık gelir. Bu durumda bir sonraki logon işleminde şifre süresi dolmuş yani logon sırasında şifresini değiştirmesi gereken bir kullanıcı RDP ile bağlantı kuramamaktadır. Aşağıdaki gibi bir uyarı alabilirsiniz

Bu durumda NLA özelliğini kapatabilirsiniz, ancak tavsiyem bunu kapatmamanızdır, çünkü güvenlik için bu önemli bir özelliktir. Peki çözüm nedir? Aslında basit, server 2012 R2 ve sonrasında terminal server hizmetlerinde RD Web özelliği sayesinde kullanıcılar bir web ara yüzü üzerinden şifresini değiştirebilir.

Okumaya devam et

RDS – Terminal Server Oturum Erişimleri – Shadow Remote Control

Terminal Server ortamlarında sistem yöneticileri kullanıcılarına destek vermek için uzak erişim talebinde bulunabilir. Bunu uzun yıllardır bilinen bir yönetim alışkanlığıdır. Tabiki son kullanıcı bilgisayarlarına benzer şekilde yardım masasındaki çalışanların erişimi için SCCM veya 3 parti programlarda kullanılarak bağlanılabilir. Ancak Terminal server ortamları bu özelliği yıllardır ücretsiz bir şekilde sunduğu için (Shadow) genelde çok sık kullanılan bir özelliktir.

Peki bu özelliği bir terminal server ortamında nasıl kullanıyoruz?

Öncelikle Terminal Server kurulumunun tamamlandığını düşünüyorum, bu konuda da bir ihtiyaç var ise ÇözümPark Bilişim Portalı üzerinde bu konuda pek çok makale bulunmaktadır. Kurulum sonrasında ilk yapmanız gereken yerel GPO veya çok fazla RDS sunucusu olacak ise merkezi bir GPO ile aşağıdaki ayarları yapılandırmanız gereklidir;

Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections\Set Rules for Remote Control of Remote Desktop user Session

Okumaya devam et

Server Manager Tazeleme Sorunu – Automatic Refresh Failed issue in Server Manager in Windows Server

Bu konuda google da pek çok öneri var, ancak ÇözümPark Bilişim Portalı forumlarında bu konuda bir tespit bulundu bunu paylaşmak istedim. Eğer google aramasında çıkan sonuçlar sorununuzu çözmedi ise muhtemel custom bir servis olabilir. Yani Windows Server standart servislerin dışındaki servisleri Disable edip durumu kontrol etmenizi tavsiye ediyorum.

The Boot Configuration Data for your PC is missing or Contains Errors – 0xc000000f

The Boot Configuration Data for your PC is missing or contains errors

Eğer İşletim sistemini açarken aşağıdaki gibi bir hata ile karşılaşıyorsanız;

Bu işletim sisteminizin açılış dosyalarında bir sorun olduğunu gösterir. Bunun pek çok nedeni olabilir, ortak kullanılan bir terminal server ve yetkili kullanıcılar bu dosyalara zarar vermiş olabilir, virüs ve benzeri kötü içerikli bir kod parçacığı buna neden olmuş olabilir, sanal bir makine ise makine disk ayarlarındaki değişiklikler veya güncelleme kaynaklı olabilir. Önemli olan bu sorunu nasıl düzelteceğimiz.

Öncelikle sanal veya fiziksel fark etmeksizin bir windows ISO dosyasına ihtiyacınız bulunmaktadır. İşletim sisteminiz Windows Server ise Server, Client ise client yani mevcut OS ile aynı sürüm bir ISO’ yu DVD veya USB olarak eğer sanal ise zaten doğrudan ISO olarak gösterip işletim sistemini bu kurulum medyasından başlatın.

İlk olarak karşınıza OS yükleme ekranı gelecektir, burada dil ayarlarını yaptıktan sonra next diyerek ilerleyin. Bu bölümde hemen alt köşede “repair” seçeneğini göreceksiniz;

Daha sonra `Troubleshoot` seçeneğini seçin

Bu seçeneği seçtikten sonra karşınıza aşağıdaki gibi bir ekran gelecektir;

Bu bölümde ise “command promt” seçeneğini seçin;

DOS ekranında önce C dizinine geçip sonra aşağıdaki komutu yazıyoruz;

Bu işlemden sonra sorunsuz bir şekilde İşletim sisteminin açıldığını göreceksiniz.

Eğer hala sorun devam ediyor ise bir ümit aşağıdaki seçeneği deneyebilirsiniz;

Startup Repair işlemi de benzer bir Deneme ile açılış sorunlarını çözmeye çalışacaktır. Eğer sorun çözülebilecek bir durumda ise İşletim sisteminin sorunsuz bir şekilde çalıştığını göreceksiniz.

Ben aktif olarak müşterimde ilk yöntem ile sorunu çözdüm ama hepimiz biliyoruz ki her sorunun birbirinden farklı kaynağı olabileceği için bu yöntem Çözüm olmayabilir.

Umarım faydalı bir yazı olmuştur.

Windows 10 Pro Sürümü için GPO ile Lock Screen Yönetimi- Configure Windows Spotlight on the lock screen

Windows Spotlight, farklı arka plan görüntülerini görüntüleyen ve bazen kilit ekranında öneriler sunan kilit ekranı arka planı için bir seçenek olarak Windows 10 da sunulan bir özelliktir. Bu özellik tüm Windows 10 masa üstü sürümlerinde yer almaktadır.

Bazı şirketlerin iş ihtiyacı nedeni ile lock screen olarak ifade ettiğimiz işletim sistemi ekranının kilitlendiğinde ortaya çıkan bu görselleri kurumsal görseller ile değiştirmek isteyebilir. Bu durumda aşağıdaki makale ile kolaylıkla yapılabilir;

https://docs.microsoft.com/en-us/windows/configuration/windows-spotlight

Fakat bu yöntem Windows 10 Enterprise ve Windows 10 Education sürümleri için çalışan bir yöntemdir.

Aşağıdaki yolu takip edebilirsiniz;

“Computer Configuration\Administrative Templates\Control Panel\Personalization\Force a specific default lock screen and logon image”

Okumaya devam et

RDS Session Time Limits Ayarları

Windows sunucu sistemlerinin hem güvenlik hem de performans için uzak bağlantılarının yönetilmesi önemlidir. Bu bağlamda uzak bağlantılar için yerel veya Merkezi gpo uygulanabilir.

GPO ayarlarına ulaşmak için aşağıdaki yol izlenir;

Computer Configuration\Policies\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Session Time Limits

Set time limit for disconnected sessions

Bir kullanıcı login olduktan sonra uzak Bağlantı penceresini kapatır ise arka planda oturum açık kalmaya devam eder. Ancak bu GPO aşağıdaki gibi ayarlanır ise;

Bu uzak Bağlantı disconnect olduktan 1dk sonra oturum kapanır. Yani yapılan işler yarıda kalır.

Set time limit for active but idle Remote Desktop Services sessions

Active bir session’ ın kaç dk boşta kalması durumunda disconnected olacağına karar veriyoruz.

Örneğin bu değeri 2 saat yaparsak 2 saat boyunca boşta kalan session disconnected olarak kapanacaktır. Bu sayede bir daha bağlanmak isteyen kişi kullanıcı adı ve şifre girmek zorundadır.

Örnek 30dk boyunca kapatmadığınız ama örneğin aşağı indirdiğiniz veya aktif olsa bile remote Bağlantı yaptığınız bilgisayarı lock edip gittiğinizi düşünün. Geldiğiniz zaman remote Bağlantı kopmuş olacaktır. Ancak otorum kapanmamıştır. Yani çalışmalarınız aynen kaldığı yerden devam eder.

Ancak bu davranışı aynı anda “Terminate (End) session when time limits are reached” isimli GPO ile kullanırsanız değiştirebilirsiniz. Bu durumda yukarıdaki GPO’ yu aşağıdaki gibi Enable yaparsanız 2 saat sonra oturumda kapanır.

Set time limit for active Remote Desktop Services sessions

Bir kullanıcının maksimum çalışma süresini ayarladığımız ilkedir. Örneğin bu değeri 2 saat yaparsak bir kullanıcı bir oturum için makismum 2 saat çalışacaktır. Bu süre dolmadan 2dk önce bir uyarı gelecektir.

Eğer bir diğer GPO olan “Terminate (End) session when time limits are reached” da aşağıdaki gibi enable ise otorum komple kapanır, yani dosyalar, açık olan uygulamalar kapanır

Ancak bir Sonraki GPO olan “Terminate (End) session when time limits are reached” varsayılan durumda yani aşağıdaki gibi ise

Sadece disconnect olur. Aşağıdaki gibi bir uyarı ile uzak Bağlantı kapanır. Ancak açık olan dosyalara bir şey olmaz. Yani log off olmaz.

Terminate (End) session when time limits are reached

Bu ilkeyi enable olarak ayarlarsanız idle veya aktif çalışma süreleri dolduğunda kullanıcı oturumu log off olur. Yani oturum kapanır.