Kurulumunu da powershell ile tamamladığım IIS sunucuma, şu şekilde bir powershell oturumu ile uzaktan bağlıyım.
Enter-PSSession -Computername IISsunucu1
Sunucu bilgisayar üzerinde kurulu IIS sistelerini görmek için iki benzer cmdlet var:
Get-Website
ve
Get-IISSite
İkisi de benzer çıktı üretiyor, benzer işlevselliğe sahip. Birincisi WebAdministration modülünün bir parçası. İkincisi ise IISAdministration modülünün bir parçası. İkincisinin daha yeni bir modül olduğu söyleniyor. Ama yeni modülde tüm cmdlet'lerin karşılıkları yok.
Yüksek olasılıkla sunucunuzda birden fazla IIS sitesi olacak. Bu komutlar da size bir dizi (array) nesnesi dönecek. Bu dizinin Name, ID, Physical Path, Bindings gibi alanları olacak. Genellikle bu listelenen sitelerden biri ile ilgileniyor oluruz. İstediğimiz siteyi Name alanı ile süzebiliriz.
Get-IISSite -Name site1
Nesnenin derinlerinden site loglarının saklandığı konumu çekmek için
$s1.LogFile.Directory
kullanabilirim.
Bir siteyi durdurmak veya yeniden başlatmak için
Stop-IISSite -Name site1
Start-IISSite -Name site1
kullanılabilir. Mevcut durum zaten Get-IISSite cmdlet'inin state alanında görünüyor.
Sunucumda IP tabanlı kısıtlama/izin modülü kurulumu merak ettim.
Get-WindowsFeature Web-IP-Security
şöyle bir sonuç döndü:
Display Name Name Install State
------------ ---- -------------
[ ] IP and Domain Restrictions Web-IP-Security AvailableKurulu değilmiş. Kurmak için
Install-WindowsFeature Web-IP-Security
kullandım.
IIS'te IP kısıtlaması iki farklı şekilde olabilir; verilen IP adreslerine izin verip geri kalan her bağlantıyı engellemek veya tam tersi verilen IP adreslerini engellemek, geri kalan her bağlantıya izin vererek. Mevcut durumda sitemizin hangi yapıda olduğunu görelim:
(Get-WebConfigurationProperty `
-Filter "system.webServer/security/ipSecurity" `
-PSPath "IIS:\" `
-Location "site1" `
-Name allowUnlisted).Value
allowUnlisted, listede olmayanlara izin verilsin mi sorusunu yanıtlar. True dönüyorsa sitemiz listede olmayanlara izin veren, yani listedeki IP adreslerini engelleyen durumdadır. False dönüyorsa listedekilere izin verir, geri kalanı engeller. Şimdi listemizi görelim.
Get-WebConfiguration `
-Filter "system.webServer/security/ipSecurity/add" `
-PSPath "IIS:\" `
-Location "site1" | Select-Object ipAddress, subnetMask, allowed
Diyelim ki IIS'in ayarı belirtilen IP adreslerini engellemek, diğer herkese izin vermek yönünde. Bunu tam tersi olarak değiştirmek için
Set-WebConfigurationProperty `
-Filter "system.webServer/security/ipSecurity" `
-Name "allowUnlisted" `
-Value $false `
-PSPath "IIS:\" `
-Location "site1"
gibi bir ifade kullanmalıyım.
Engellenen bir IP adresi ekleme yolu
Add-WebConfigurationProperty `
-Filter "system.webServer/security/ipSecurity" `
-PSPath "IIS:\" `
-Location "site1" `
-Name "." `
-Value @{
ipAddress = "192.168.1.100"
allowed = $false
}
ya da izin verilen bir IP ekleme yolu
Add-WebConfigurationProperty `
-Filter "system.webServer/security/ipSecurity" `
-PSPath "IIS:\" `
-Location "site1" `
-Name "." `
-Value @{
ipAddress = "192.168.1.101"
allowed = $true
}
