10 Ağustos 2012 Cuma

SharePoint 2010’da _layouts, _vti_bin ve yerleşik (built in) sayfaları Anonim kullanıcı erişimine engellemek.


İnternet Portallerinde tahmin edebileceğimiz üzere çoğunda public kullanıcıların kısıtlı miktarda erişimleri vardır. Diğer bir deyişle anonim kullanıcıların okuma haklarının olması durumudur. Bu durum SharePoint 2007 ve 2010’da yanında bir sorunu da karşımıza çıkarmaktadır.
Anonim kullanıcılara siteye erişim hakkı (Okuma vb.) verdiğimiz durumda sadece genel arayüzdeki içerikleri görmekle kalmayıp sharepoint ile yerleşik (built in) gelen birçok SharePoint Form sayfları ve SharePoint sistem ayar sayfalarını görebilecektir. Bu durumda tasarımsal açıdan sorun olduğu kadar güvrnlik açığı olarak da nitelendirebileceğimiz bir sorun teşkil etmektedir.

A. SharePoint Form sayfasından kasıt http://sp10/Sayfalar/Forms/AllItems.aspx gibi her liste ve kütüphane için oluşturulan form sayfalarıdır. Bu sayfalara erişimi engellemek için (erişilmek istendiğinde login olunmasını sorma) için aşağıdaki komut bloğunu çalıştırmak gerekmektedir.

stsadm.exe –o activatefeature –url -filename ViewFormPagesLockdown\feature.xml
Yapacağımız işlemler sırasıyla;
  •  Yukarıda yer alan komut bloğunu –filename kısmında işleme yapacağımız portal adresi yer alacak şekilde SharePoint 2010 PowerShell aracılığıyla çalıştırıyoruz.
  • Eğer mevcut durumda anonim erişim varsa öncelikle onu kapatmalısınız ve yeniden açmalısınız

Her ihtimale karşı sisteminizce sakıncası yoksa iisreset atmak yaptığımız işlemin sonucunu daha net görmemizde fayda sağlayacaktır.
Artık herhangi bir listenin formlarına girmeyi denediğimizde bizden yetkili kullanıcı hesaplarındna biri ile giriş yamamızı isteyecektir.

B. Form sayfaları dışında yukarda bahsettiğimiz üzere SharePoint sistem ayar sayfalarını anonim erişimi istenmeyen bir durumdur. _layouts ve _vti_bin dizininde yer alan sayfalardan erişimini kapatmak istediğimiz sayfalar için aşağıdaki örenekteki konfigürasyon ayarlarını web.config içerisinde yapmalıyız.

<add path="configuration">
    <
location path="_layouts">
      <
system.web>
        <
authorization>
          <
deny users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_vti_bin">
      <
system.web>
        <
authorization>
          <
deny users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_layouts/login.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <
location path="_layouts/error.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>
    <location path="_layouts/accessdenied.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>

Örnekte olduğu gibi izin verilen
_layouts/login.aspx
_layouts/accessdenied.aspx
_layouts/error.aspx
dışındaki sistem sayfalarının hiç birine anonim kullanıcılar erişemeyecektir. Erişmek istediklerinden sisteme yetkili bir hesap ile login olmaları istenecektir.



Uyarılar:
  • Portaldaki yetkilerden farklı olarak anonim kullanıcılara bir listeye öğe ekleme yetkisi verecek iseniz (örneğin yorumlar, sayaçlar gibi listeler olabilir), öncelike siteyi tekrar anonim erişime açıp ilgili izinleri verip tekrar erişime kapamamız gerek. Bu süreçte anonim kullanıcıların form sayfalarına erişimlerini tekrar açmamız gerekecektir.
Actifleştirdiğimiz feature’ı deactive etmek için aşağıdaki kod bloğunu kullanabiliriz.
stsadm -o deactivatefeature -url -filename ViewFormPagesLockDown\feature.xml
  • Erişime  açmak istediğimiz sistem sayfaları için örneğin _layouts/login.aspx için web.config de aşağıda yer alan izin verme kod parçacığı  web.configde ilgili alana eklenmelidir.

<location path="_layouts/login.aspx">
      <
system.web>
        <
authorization>
          <
allow users="?" />
        </
authorization>
      </
system.web>
    </
location>

Kolaylıklar dilerim

Hiç yorum yok: