15.05.2024

Tarayıcı savaşları

 Bugün Reddit'te aşağıdaki ekran görüntüsünü görünce şaşırdım.


Bu "kullanıcı iradesine müdahale" delilini gördükten sonra önce Linux üzerinden Bing'de yaptığım aramada benzer bir sonuç ile karşılaşmadım. Sonra Windows'da Edge ile yaptığım aramada ben de aynı şeyi gördüm:


Bu bir arama motoru. Arama terimlerine karşılık gelen en yakın sonuçları listelemesi gerek. Ama o sonuçları amacına göre değiştiriyor. İlk sıraya reklam görünümlü mesajı koyuyor: "Yeni bir web tarayıcısı indirmenize gerek yok".

İlk adımı bunun gibi görece masum minik müdahaleler sonraki adımlarda hayatımızda daha büyük etkiye sahip, daha rahatsız edici şekillerde kullanılıyor. Bakınız, Cambridge Analytica olayı. Kullanıcı davranışında belli belirsiz bir değişikliğe sebep olabiliyorsak başarılı sayılırız denmişti. Kullanıcı verileri kullanılmıyor gibi gelebilir belki ama Linux'ta aynı sonucu vermediğinden yola çıkarsak benim işletim sistemi kullandı bile.

---

https://www.reddit.com/r/browsers/comments/1crs3d1/who_else_does_this/

https://www.reddit.com/r/Windows11/comments/17b3bu5/microsoft_stop_making_me_feel_bad_for_downloading/

https://www.reddit.com/r/assholedesign/comments/zz8t4i/microsoft_really_does_not_want_you_to_download/

https://www.reddit.com/r/windows/comments/12skbx9/edge_stopping_me_from_downloading_chrome/

https://www.reddit.com/r/shitposting/comments/199sxv9/edging_to_this_rn/

https://www.reddit.com/r/pcmasterrace/comments/199vks2/chat_is_this_real/

https://www.reddit.com/r/firefox/comments/11cpa98/forgot_how_pushy_edge_is_after_a_clean_install/


8.05.2024

Powershell ve Windows Firewall

Windows Firewall, Windows Advanced Firewall veya Windows Defender Firewall. Microsoft'un ürünlerine verdiği isimler bana hep garip gelmiştir. Bir müzik ve video oynatıcısı yapıp adına media player demek, mesajlaşma uygulamasına messanger, interent tarayıcılarına Internet Explorer demek... İşletim sisteminin adı zaten Windows.

Konuyu dağıtmayalım. Bugün baktığımda kullandığım bilgisayarın güvenlik duvarımda 700'den fazla kural var. En fazla 2 tanesini ben oluşturmuşumdur -belki. Üstüne ek yazılımlar kurduğumuzda daha da fazlası geliyor. Bunlar ile uğraşmak hiç kolay değil. Evet, belli kolaylıklar sağlanmış, gruplanmış. Ağlara göre sınıflandırılmış (etki alanı, özel ağ, genel ağ falan) ama yine de belli bir portu açmak için yeni bir kural mı oluştursam, yoksa var olan kurallardan biri işimi görür mü diye düşündüğüm durumlar hiç az değil. Üstüne üstlük "Gelişmiş Güvenlik Özellikli Windows Defender Güvenlik Duvarı" uygulaması da pek kullanışlı değil. İsme, adrese veya porta göre arama, sıralama, süzme yok. Ama iyi ki Powershell var!

Yeni bir bilgisayara oturduk. Tüm önyargılara rağmen ilk yapılacak iş güvenlik duvarını devreye almak. Güvenlik duvarı, bağlı olunan ağ profiline göre kuralları etkinleştiriyor. Mevcut ağ profilimize bakalım:

Get-NetConnectionProfile

Bakılacak alan NetworkCategory. Private / Public arasında geçiş yapmak için

Set-NetConnectionProfile -NetworkCategory Private

kullanabiliriz. Bu profile uyan güvenlik duvarı profilimizi görmek için

Get-NetFirewallProfile -Name Private | Select-Object Name, Enabled, DefaultInboundAction

kullanabilir, Enabled alanından etkin mi değil mi görebilir, DefaultInboundAction'dan kurala uymayan gelen trafiğe karşı varsayılan eylemini (Block olmalı) tespit edebiliriz. Genel eğilim, güvenlik duvarını etkinleştirirken bütün profilleri etkinleştirmek. Eğer yapmak istediğimiz buysa

Set-NetFirewallProfile -All -Enabled True

Burada garip olan, True değerinin bir boolean değer değil de GpoBoolean olması. Şu sayfa da dahil her yerde $True yerine True yazılmış. Tam olarak aynı şey mi, emin değilim ama şöyle birşey buldum:

$a = [Microsoft.PowerShell.Cmdletization.GeneratedTypes.NetSecurity.GpoBoolean]::True
$a -eq $True
True

yani sanki aynı şey. Bu adımlardan sonra ikinci yaptığım şey genelde bazı temel kuralları etkinleştirmek veya kontrol etmek. Örneğin söz konusu bilgisayara uzak masaüstü yapılmasını istiyorsam ilgili kuralın devrede olup olmadığını kontrol ederim. Bunun için içinde "Uzak Masaüstü*" (İngilizce bilgisayarlarda "Remote Desktop*") geçen kuralları  geçenleri ararım:

Get-NetFirewallRule -DisplayName "Uzak Masaüstü*" | ft Name, DisplayName, Enabled

Bunu dahil oldukları gruba göre arayarak da yapabilirim:

Get-NetFirewallRule -DisplayGroup "Uzak Masaüstü" | ft Name, DisplayName, Enabled

Bu kuralların hangi uygulamaya, hangi porta ve hangi uzak IP grubuna izin/engelleme verdiğini görmek için ise şu sorgu mükemmel:

Get-NetFirewallRule -DisplayGroup "Uzak Masaüstü" | 
Format-Table DisplayName,
@{N="Port";E={($_|Get-NetFirewallPortFilter).LocalPort}},
@{N="Application";E={($_|Get-NetFirewallApplicationFilter).Program}},
@{N="Address";E={($_|Get-NetFirewallAddressFilter).RemoteAddress}} -AutoSize

Benzer şekilde IIS yüklü bir bilgisayarda 80 numaralı port üzerinden HTTP hizmeti vermek için güvenlik duvarındaki kuralları kontrol etmek istersem

Get-NetFirewallRule -DisplayGroup "*World Wide Web Services*" | Ft DisplayGroup, DisplayName, Enabled

Bilgisayarımız ping'lere cevap veriyor mu diye bakmak için (İngilizce bilgisayarlarda):

Get-NetFirewallRule -DisplayName "Core Networking Diagnostics - ICMP Echo Request (ICMPv4-In)" | 
Format-Table DisplayGroup, Displayname, Profile, Enabled

ya da grup bazlı

Get-NetFirewallRule -DisplayGroup "Core Networking Diagnostics" | 
Format-Table DisplayGroup, Displayname, Profile, Enabled

Türkçe bilgisayarlarda aynısını yapmak için ise

Get-NetFirewallRule -DisplayName "Çekirdek Ağ Tanılama - ICMP Yankı İsteği (ICMPv4-Gelen)" | 
Format-Table DisplayGroup, Displayname, Profile, Enabled

grup bazlı olarak da

Get-NetFirewallRule -DisplayGroup "Çekirdek Ağ Tanılama" | 
ft DisplayGroup, DisplayName, Profile, Enabled -AutoSize

gibi birşey olabilir. Bunlardan etkinleştirmek istediklerimizi pipe ile

Get-NetFirewallRule -DisplayName "Çekirdek Ağ Tanılama - ICMP Yankı İsteği (ICMPv4-Gelen)" | 
Enable-NetFirewallRule

ya da devre dışı bırakmak için Disable-NetFirewallRule yapabiliriz. Dosya ve yazıcı paylaşımı kural grubu için sırasıyla Türkçe ve İngilizce bilgisayarlarda komudumuz şöyle olabilir:

Get-NetFirewallRule -DisplayGroup "Dosya ve Yazıcı Paylaşımı" | 
ft Displayname, DisplayGroup, Enabled, Profile -AutoSize

Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" | 
ft Displayname, DisplayGroup, Enabled, Profile -AutoSize

Bütün dosya paylaşımlarını devre dışı bırakmak için

Get-NetFirewallRule -DisplayGroup "Dosya ve Yazıcı Paylaşımı" | Disable-NetFirewallRule

kullanılabilir.

Asıl kilit nokta, herhangi bir porta komuta eden bir kural var mı yok mu aramak istersek

Get-NetFirewallRule | where {($_ | Get-NetFirewallPortFilter).LocalPort -eq 9401} | select DisplayName

Kurallar etki alanı (domain), özel ağlar (private) ve genel ağlar (public) olarak kategorize edildiği için bu profile bilgisine dikkat etmek çok önemli. Özel bir ağda çalışırken genel ağ kuralı üzerinde işlem yaparsak etkili olmayacaktır.

6.05.2024

ProfileNameServer

Etki alanı üyesi taşınabilir bir bilgisayarımız var. Etki alanı dışına çıktığında bir wifi ağına bağlanarak işlem yapamadığına dair bir şikayet geldi. İncelediğimde

ipconfig /all

ile listelenen DNS suncuların hala (yerel ağın dışında bir wifi'a bağlıydı ve bu wifi kendi DNS sunucusunu bildiriyordu) etki alanımızın (aslında halen kullanılmayan eski) sunucularının olduğunu gördüm. Ağ adaptörlerinin hiçbirinde bu IP adresleri girilmemişti. Nereden gelebilir acaba diye registry'de yaptığım bir aramada HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interface altında bazı GUID'lerin altında ProfileNameServer adında bazı girişlerin olduğunu ve bu girişlerin içinde eski sunucularımıza ait DNS girişlerinin halen yer aldığını farkettim. Garip bir şekilde bu durumu yaşayan başka [1], [2] insanlar da varmış. Çözüm elle bu değerleri silmek ya da 

Set-DHCPClientServerAddress -InterfaceIndex xx -ResetServerAddress

kullanarak bunu işi Powershell'e yaptırmak.

---

[1] https://learn.microsoft.com/en-us/answers/questions/828532/static-dns-server-address-returning
[2] https://www.qbitnetworking.com/blog-posts/windows-10-wifi-dns-server-address-stuck-wifi-is-connected-but-no-internet