IIS UZERINDE FTP SERVISI
Internet üzerinden dosya paylaşımı vs. için kullandığımız yöntemlerden birisi olan ftp servisini bu makalede tanıyacağız. Doğal olarak bir takım dosyalarımızı veyahut bir web sitesi yayınlıyorsak ve buna public veya private bir ortamdan erişecek ve bazı uploadlar yapacaksak. Bir ftp sunucusu kurabiliriz. Microsoft sunucu ailesinde ek özellik olarak gelen iis servisinin bize sunmuş olduğu ve microsoft’un tek ftp servisi çözümü olarak IIS ( Internet Information Service )’in üzerinde çalışan ftp servisini inceleyeceğiz.
Öncelikle Ftp’nin tanımı nedir?
Ftp - File Transfer Protocol ismini kısaltılmış halidir. Ftp’nin asıl amacı hızlı dosya transferini sağlamaktır. Tcp 21 ve 20 portunu kullanarak çalışmaktadır.
Ftp servisi IIS’in altında çalışacağı için gerekli kurulumu başlatıyoruz.
Resim-1-
Bu menüye Control Panel ( Denetim Masası ) içerisinden Add or Remove Programs ( Program Ekle Veya Kaldır )’ın altında Add Remove Windows Component ( Windows Bileşenlerini Ekle Kaldır )’a geçerek yukarıdaki resimdeki gibi ilgili kutucukları işaretliyerek tamam diyoruz ve kurulumu bitiriyoruz.
Şimdi biz IIS ve IIS’in altındaki Ftp kutucuğunu işaretleyerek bize gerekli olan servislerin kurulumunu tamamladık.
IIS’i açıp ftp servisimizi yapılandıralım.
Resim-2-
Start – Settings - Control Panel – Administrative Tools adımlarını takip ederek yukarıdaki resimde bulunan IIS Manger’ı açalım.
Resim-3-
Resim 3’deki gibi panel karşımıza geliyor ve burda yapacağımız ilk adım. Default Ftp Site’ı silmek. Bunun için Default Ftp Site’a sağ tıklayarak Delete diyoruz. Eğer işletim sisteminiz windows client ailesi ise. Default site’ı silemezsiniz. Ve sadece tek bir Ftp site yayınlarsınız.
Resim-4-
Default Ftp Site’ı sildikten sonra Ftp Sites’a sağ tıklayarak New - Ftp Site diyoruz ve devam ediyoruz.
Resim-5-
Burada bir açıklama girmek zorundayız. Açıklamayı girerek devam ediyoruz. Bu açıklama sadece bir açıklamadır başka bir şey değildir.
Resim-6-
Burada bize bu ftp site’ın hangi ip den geleceğini soruyor. Yani IIS hangi Ethernet kartının TCP 21 nolu portunu dinleyecek. Yukarıda görüldüğü gibi iki ad Ethernet kartının almış olduğu iplerdir. Burada ihtiyacınıza uygun olacak şekilde seçin. Altta bulunan 21 ise port numarasıdır. Bu Ftp site default olan TCP 21 portundan dinleyecektir. Tcp 20'yi de açmanız gerekmektedir. Ftp sessionları Tcp 20'den başlar. Bu değeri isterseniz ihtiyacınıza gore değiştirebilirsiniz.
Örn: yukarıdaki port numarasına 22 yazarsanız. Site’a erişim için ftp://10.0.0.10:22 şeklinde yazmanız gerekmektedir.
Ilgili yerleri yapılandırıyoruz ve devam ediyoruz.
Resim-7-
Karşımıza gelen ekranda ise;
Do Not isolate users: Bu seçenek Ftp’ye sadece kullanıcılar erişmesi için ve user’lara herhangi bir izolasyon yapmadan kurulumu devam ettirecektir.
Isolate Users: Bu seçenek ise kısaca Ftp site’ın permissionlarına eklediğimiz kullanıcıları izole edecektir.
Isolate users using Active Directory: Bu seçenekteki durum ise. Isolate users’ın Active Directory versiyonudur.
Şimdilik biz herhangi bir izole uygulamadan default olan izole etmeden ( Do not isolate users )devam ediyoruz.
Resim-8-
Karşımıza gelen bu pencere Ftp site’ın home directory yani ana dizinin neresi olacağını seçiyoruz. Ve devam ediyoruz. Ben burda D sürücüsünü seçtim. Herhangi bir web tarayıcıdan ve ftp client programından gelen kullanıcılara bu dizin gösterilecektir.
Resim-9-
Yukarıdaki resimde Ftp site izinlerini belirliyoruz. Read ( oku ) ve Write ( yaz ) şeklinde iki seçeneğimiz geliyor. Read seçeneğini seçer isek, Ftp site’ımıza gelen kullanıcılar sadece dosyaları okurlar kopyalarlar ama upload yapamazlar silemezler ve değiştiremezler. Write der isek gelen kullanıcılar okuyup yazacaklar upload yapacaklar ve site’da belirlenen permission çerçevesinde yetkilere sahip olacaktır.
Kendi durumunuzu göze alarak oluşturduğunuz yapılandırma ile shirbazı sonlandırıyoruz.
Resim-10-
Ftp site’ın özelliklerine girdiğimizde yukarıdaki şekildeki gibi menü gelecektir. Ilk tab’da sihirbazda yaptığımız ayarlar gelecektir. Ilk olarak açıklamamız sistemdoktoru, bu site’a 10.0.0.10 ipsinden ulaşacağımız ve Tcp 21 numaralı portu kullanacağımızı görüyoruz.
Alt tarafata bulunan Ftp site connection kısmında ise; Ftp site’a bağlanan client sayısını belirtebiliriz defaultta 100.000 gelmektedir. Bunu bandwith’inize gore seçebilirsiniz. Ve Time-Out zamanı ise 2 dakika yani 120 saniyedir. Ftp site’a bağlı olan kullanıcılar 120 dakika boyunca hiç bir şey yapmazlarsa bağlantıları kesilecektir. Ve tekrar bağlanmak zorunda kalacaktır. Şimdi burada mesela benim bağlantım yavaş. Limit olarak 3 kullanıcı veriyorum. Ve Ftp site’ımı hiç kimse authentication’dan geçmesin diye ayarladım ise. Herkez default olarak IEuser@ olarak geleceği için bu sınırlamanın hiç bir anlamı kalmayacaktır. Kısaca bu ftp servisi connection başına değil user başına kontrol edrek limit koymaktadır. Eğer herkez authentication’dan geçiyor ise, vermiş olduğumuz limtin üzerinde çıkılırsa kullanıcıyı Ftp site’a erişmesini engeller. Enable logging ise, ftp site ile ilgili ne oldu ne bitti diye bize loglayacaktır. Özelliklerine girer isek, log tutmasını hangi sıklıklarla ve nereye log dosyasını atması ile ilgili ayarları yaparız. Eğer bir database’de durmak üzere loglayacaksanız, active log format yapısını değiştirmelisiniz. Son olarak advanced tabına geçer isek, orada loglama ile ilgili neleride beraber loglayacağı bilgisidir. Örn: username , ip adresi , protocol ne kadar datayı aldı ne kadar datayı yolladı vsvs tarzında seçebilirsiniz.
Resim-11-
Yukarıdaki resimde gene Ftp site’ın özelliklerinde current sessions tabı ise şu anda bağlı olan kullanıcıları gösterir. Hangi kullanıcı hangi ipden gelmiş ve ne kadar zamandır ftp’dedir görürüz. Ve ister isek bu kullanıcıları disconnect diyerek bağlantılarını kesebiliriz.
Resim-12-
Yukarıdaki resme istinaden; Ftp site ile authentication tipini görüyoruz. Burada anonim kullanıcıların bağlantısına izin verilmiş durumda default olarak. Eğer Allow Anonymous Connection checkbox’ını kaldırırsanız anonim kullanıcılar bağlantı kuramayacaklardır sadece username ve password ile erişim sağlanacaktır. Allow only anonymous connections seçeneği ise herkez sadece anonim bağlansın demektir. Yani hiçbir kimse authentication’dan geçmesin anonim bağlansın demektir. Anonim kullanıcımızı değiştirebiliriz mesela örn administrator kullanıcısını seçer isek ve password ününe alttaki Alana girer isek her gelen administrator yetkisi ile ftp site’a anonim olarak gelecektir.
Resim-13-
Bu menüde ise ilgili kategorilere istediğinizi yazabilirsiniz.
Banner alanına yazdığımız yazılar ftp site’a ilk bağlantı kurulduğunda username ve password ekranında karşımıza çıkacaktır.
Welcome alanına yazdıklarınız yazılar ftp site’a login olduğunuzda hoş geldiniz mesajı olarak karşınıza gelecektir.
Exit alanına yazdığınız yazılar ise ftp site ile mevcut olan connection’ı kopardığınız zaman yani disconnect yaptığınızda karşınıza gelecek olan mesajdır.
Maximum Connections bu alandaki mesaj. Ftp site’a bağlı olan kullanıcıların bizim belirlemiş olduğumuz limiti aşmalarında ftp client’e verilen mesaj olacaktır.
Resim-14-
Bu kısımda ise. Dizin nerde olsun local olarak bu makinadamı yoksa farklı bir bilgisayardamı olacak. Bunu belirleyebilirsiniz. A directory located on another computer seçeneği ile dizinimizi uzak makinede tutabiliriz. Sizin güvenlik politikanıza gore bunu hangi kullanıcı hesabı ile yapacağınızı connect as ile belirlersiniz. Log visits ise gelenlerin logunu tutsun demektir. Directory Listing Style dosyaların listelenme şekilleridir.
Resim-15-
Directory Security tabında ise hangi ipler gelsin gelemesin tarzında seçenekleri ile extra güvenlik yapılandırmasını kullanabiliriz. Bu kısıtlamayı ip bazlı veya network id olarak bir network’ün tüm iplerini kapsayacak şekilde verebilirsiniz. Fakat burda önemli bir nokta var denied access’e gelip bir ip eklediğiniz zaman o ip ye izin verir ve granted acces’e eklediğiniz ipleride bloklar. Ve gene önemli olarak denied acces’e bir ip örn : 10.0.0.1 eklerseniz bu ftp site’a sadece bu ipden gelebilirler. Diğer ipleri direk bloklar.
Resim-16-
Örnek olarak bloklanan bir ftp client.
Resim-17-
Ftp site’a sağ tıklayarak permission tabına tıkladığımızda karşımıza klasik bir security tabı gelmektedir. Burada site’a erişecek ve erişemeyecek şeklinde userların ayarlamasını yapabilirsiniz vede erişebilen kullanıcıların hangi yetkilerle erişebilceğini belirtebilirsiniz. Ben şu şekilde yapılandırdım;
Administrator: Full control ; dizinde istediği her şeyi yapacaktır
Karaalioğlu: Read ; bu kullanıcı sadece okuma yapacaktır.
Sariyar: Modify ; okuyup yazıp değişiklik yapacaktır
Solmaz: Write : okuyup yazacaktır
Uzuner: : yukarıdaki resimdeki gibi deny verdiğim için hiç bir şey yapamayactır.
Burda verdiğimiz permissionlar root folder olarak belirlemiş olduğum D partition’ın security tabıdır. Yani ftp site’ın permissionları yoktur. Ftp site root folder’ın permissonlarını kullanacaktır. Burda dikkat edeceğiniz nokta ise root folder’ın permissionları ile oynayacağınız için var olan system ve administrator hesabını remove etmeyin. Buradaki system hesabı bir nevi güvenlik açığı olarak karşımıza çıkacaktır. Bu açığı kapatmak için drive olarak değil folder olarak root folder belirleyiniz. Lakin ftp site’ımızdaki permission eğer read de kalırsa veya write’ı işaretlemedi isek istediğimiz kadar kullanıcılara permission verelim kullanıcılar yazamayacaktır yani upload edemeyeceklerdir. Baskın olan ftp site permissionudur. Bu permission yapılandırması ilgili ftp site’ın Home Directory tabında bulunmaktadır.
Root folder’ımızın içinde bulunacak folderların uzun isimli ve türkçe karakter olmamasına gayret edin aksi takdirde erişimde problem yaşabilme ihtimaliniz vardır. IIS’de sadece TCP 21 portunu kullanarak tek bir Ftp site publish edebilirsiniz. Eğer aynı portu kullanarak ftp site eklerseniz durumu stop’a düşerek çalışmayacaktır. Ama farklı portları kullanarak örn 10 farklı portu kullanarak 10 adet ftp site publish edebilirsiniz. Kendi dns zone’unuzda ftp kayıt açıp isimden erişim yapmanız tavsiye edilir.
Virtual directory oluşturalım.
Resim-18-
Ftp site’a sağ tıklayark New – Virtual directory dediğimizde karşımıza bir sihirbaz çıkıyor. Burada ilk olarak alias tanımlamamız gerekmektedir. Ben örnek olarak genel alan verdim.
Resim-19-
Devam ettiğimizde bize path sorucaktır ve izinleri soracaktır. ( yaz veya oku ) devam ederek sihirbazı bitiriyoruz.
Resim-20-
Oluşturduğumuz virtual directory ile görüntümüz bu şekilde olacaktır. ftp://sistemdoktoru.com/genelalan yazdığımızda E partition’a vermiş olduğumuz permission’lar ile ulaşacağız.
Şimdi gelelim ftp site’ımıza ulaşmaya.
Bunu birçok şekilde yapabiliriz. Örnek olarak,
Ilk olarak browser aracılığı ile;
Resim-21-
Örnek bir web browser ile ulaştığımzda.
Windows işletim sistemleri için ftp komutu ile.
Resim-22-
Ftp komutunu kullanarak bağlantıyı sağlama.
Resim-23-
3. party bir uygulama ile bağlantı kurma.
Dosya transferinde ftp komutu ile dosya gönderimine örnek olarak bakar isek.
Resim-24-
Burada send komutu ile C sürücüsünün altında olan a.txt’yi ftp sunucusuna göndemiş bulunmaktayız.
? işareti ile komutların ne işe yaradığını öğrenebilirsiniz. Bunun için aşağıdaki adresi kullanabilirsiniz
http://www.nsftools.com/tips/MSFTP.htm
Ftp User Isolation
Ftp user isolation kullanarak ftp site’ımıza bağlanacak kişileri izole ederek o user’a atayacağımız home folder’la bir nevi kısıtlama yapmış olacağız. Durumun özeti ise solmaz kullanıcısına bir home folder atayacağız ve bu kullanıcı sadece kendi folder’ını görecek diğer folder’ları değil. Başlayalım,
Resim-25-
Burada klasik olarak yukarıdada yapmış olduğumuz gibi bir wizard çıkıyor ve tek farklı nokta olarak Isolate Users seçeneğini seçip izolasyonun locally olarak ayarlayıp devam ederek sihirbazı tamamlıyoruz.
Şimdi burda bir şart var oda,
Home directory yani root folder seçtiğimiz klasörün altında makinamızın netbios name’i ne ise aynı isimle bir klasör açmamız gerekmektedir. Örnek olarak,
Netbios name : Dursun
Home Directory: D:\
Olması gereken durum : D:\Dursun
Şimdi bu durumu oluşturduk ve kulanıcılarımıza folder açmamız lazım yani izole edilecek her user için bir folder açacağız. Aksi takdirde hiç kimse Ftp site’a login olamayacaktır.
Resim-26-
Yukarıda açıklanan şekilde folderlarımızı oluşturduk. Ve Ftp site’dada permissionlarıda bu kullanıcılara gore verdik yetkilerini write,read vsvs,
Şuanda sadece yukarıdaki resimde bulunan kullanıcılar Ftp site’ımıza erişecektir.
Var olan Ftp site’ımızı 2 farklı izolasyon şekline çeveribiliriz. Veya izolasyon yapmayız.
User Isolation Mod Değerleri
0 = İzolasyon yok
1 = İzolasyon var Local olarak
2 = İzolasyon var Active Directory Kullanarak
Bunu var olan Ftp site’ı silerek yeniden izole edilmiş şekilde tekrar yaratabiliriz. Veya bir script yardımı ile yapabiliriz.
Bunu X:\Inetpub\AdminScripts ( X burda harddisk sürücüsüdür. ) yolundan ulaşabilirsiniz. Örnek olarak
http://technet2.microsoft.com/windowsserver/en/library/e0c157de-a285-46d6-8cf5-375bb7aebcc41033.mspx?mfr=true
http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/b63de8ef-e3c5-456d-a8ca-7af4198819d4.mspx?mfr=true
adreslerini kullanabilirsiniz.
Artık locally isolation olarak kullanabiliriz.
Resim-27-
Örnek olarak bir user ile oturum açtığımızda olan durum.
Şimdi bu isolation durumunu aslında isolation locally’e gerek duymadan yapabilirz. Mesela not isolated bir durumda olan ftp site’ın home directory altına bir user için aynı isimli bir klasör açarsak o kullanıcıyı izole etmiş olmuş oluruz.
Peki şimdi sormamız gereken soru şu,
Not isolated durumda kullanıcı adına bir klasör açar isek kullanıcılar isole olacak peki neden izole yapayımki.
Tek fark ise İsolate Locally olarak anonim kullanıcılar login olamayacaklardır ama Not isolated durumda ise anonim kullanıcılar login olabileceklerdir.
Resim-28-
Artık Active Dir