Konu: Linux Yazar: Serkan Tarih: 01/04/02
Halka acik (anonymous) FTP dosya sunucusu kurmak
Red-Hat Linux gibi bir cok bilgisayar yazilimi internet uzerinden
ucretsiz indirilebilir.Bunun
basarilmasini saglayan yapi "halka acik ftp sunucularinin" uzerine
kurulmustur.
Her dosya alis-verisi yapmak isteyen kisiye bir FTP hesabi acmak
pratikte mumkun degildir.Ancak bu
sekilde yapilandirilmis bir FTP sunucusu ile tum dunyaya acik bir
dagitim merkezi kurulunabilir...
"Halka Acik FTP Sunuculari" bilgisayar korsanlari icin en buyuk
nimettir.Bir sunucuya yanlizca
gerekli oldugunda boyle bir ozellik eklenmelidir.Ihtiyacimiz oldugu
varsayilarak asagidaki kurulum
yazisi harilanmistir :
Red Hat Linux isletim sistemi ile hic zorlanilmadan ve ucretsiz olarak
boyle bir FTP sunucusu
kurmak icin anonftp RPM paketi kullanilir.
Hemen bu isimde bir paketin sistemde yuklu olup olmadigina bakalim :
rpm -qa | grep anonftp
Eger sunucunuzda bu paket yuklu ise surum numarasi ile beraber ekrana
gelecektir.
herhangi bir cikti ekrana yazilmaz ise program sisteminizde yok
demektir. Red Hat Cd-Rom'undan bu
paketi asagidaki gibi yukleyebilirsiniz :
rpm -ivh anonftp-3.0-6.i386.rpm
Sisteminizin mimarisi ve CD-Rom'daki paketin surum numarasina gore
yukaridaki komutu kendinize gore
duzenlemeniz gereklidir.(Ornegin i386 pentium mimarisine sahip sistemler
icindir.)
Bu paket bir kez kurulduktan sonra "Halka acik FTP sunucusu" calismaya
hazirdir.
Onemli Not : Sisteminizde "ftp" isimli kullanici hesabi herhangi bir
sifre verilmemis olarak hazir
olmalidir. /etc/passwd dosyasi icinde "ftp" kullanci adina sahip hesap
icin :
ftp:*:14:50:FTP User:/home/ftp:/bin/true
sekinde bir kayit olup olmadigini kontrol ediniz...
Kurulumun nasil yapildigini gormek istiyorsaniz sagidaki gibi bir komutu
calistirabilirsiniz :
rpm -qlp anonftp-3.0-6.i386.rpm
Su anda kurulumla ilgili dosyalari goruyor olmalisiniz.Butun dosyalar
~ftp klasorune
yerlestirilir.(Bu klasor 'ftp' kullanicisi icin ev klasorudur.Bunun ne
oldugunu gormek icin
/etc/passwd dosyasina bakilmalidir.)
Bulundugunuz klasoru ~ftp olacak sekilde degistirin ve "ls -l" komutunu
calistirin.
[serkan@ns1 ~ftp]# ls -l
total 4
d-x-x-x 2 root root 1024 Nov 5 15:29 bin
d-x-x-x 2 root root 1024 Nov 5 15:29 etc
drwxr--xr--x 2 root root 1024 Nov 5 15:29 lib
dr--xr--sr--x 2 root ftp 1024 Sep 10 17:21 pub
seklinde bir ekran ciktisi goreceksiniz.simdi bin klasorune gecerek ls
-l komutunu bu klasorde
calsitriniz :
[serkan@ns1 ~ftp/bin]# ls -l
total 313
---x-x-x 1 root root 15236 Nov 5 15:29 compress
---x-x-x 1 root root 46356 Nov 5 15:29 cpio
---x-x-x 1 root root 45436 Nov 5 15:29 gzip
---x-x-x 1 root root 29980 Nov 5 15:29 ls
---x-x-x 1 root root 62660 Nov 5 15:29 sh
---x-x-x 1 root root 110668 Nov 5 15:29 tar
Bu hizmet yazilimlari FTP sunucusunda olmasi gereken yazilimlardir.
Ornegin ls programi klasorlerin
icerigini goruntulemek icin kullanilir.Peki bu yazilimlar neden burada
duruyorlar?
Cevap cok basit : Biz "halka acik sunucu kurarken" ~ftp klasorunu
(/home/ftp) "chroot" programiyla
sunucu icin kok klasor haline getiriyoruz.Bu durumda sunucunun diger
klasorlerine erisim mumkun
olmamaktadir.
Kullanicinin halka acik bu sunucuya baglanmasi halinde bazi hizmet
yazilimlarini (ornegin ls gibi)
kulanmasi sarttir.Bunlari /bin klasorune yerlestirip problemi cozmus
oluyoruz...
Sizde istediginiz uygulamalari /etc , /bin, ve /lib klasrlerinden alip
buraya
yerlestirebilirsiniz.Sunucu guvenligi icin bu klasorlerde mumkun
oldugunca az yazilim
bulundurulmalidir.
~ftp/lib klasoru ~ftp/bin klasorundeki programlarin ihtiyac duydugu
kitaplik dosyalarini
barindirir.
~ftp/pub klasoru sizin halka acik olarak dagitacaginiz yazilimlari veya
dosyalari koyabileceginiz
klasordur.
Eger bu "isimsiz" kullanicilara (halka acik FTP sunucusuna baglanan ve
kimlikleri belli olmayan
kisiler) sunucuya "dosya yukleme" yetkisi vermek isterseniz asagidaki
adimlari izlemeniz gereklidir
:
1.Yeni bir klasoru ~ftp dizini altinda "yuklenen dosyalarin saklanmasi"
icin yaratin.Bu klasor
genellikle "incoming" olarak isimlendirilir.Burada da "incoming" isminde
bir klasor yarattiginizi
kabul edecegiz.
2.Asagidaki satiri /etc/ftpaccess dosyaniza ekleyin :
upload /home/ftp /incoming yes root ftp 0600 nodirs
3.Yukaridaki satirda gecen /home/ftp klasoru'nun sizin sisteminizdeki
dogru yolu gosterdigine emin
olunuz.Ornegin sizin ~ftp klasorunuz ('ftp' kullanicisi icin ev dizini)
/data/ftp ise lutfen
yukaridaki ayarda /home/ftp yerine /data/ftp yaziniz.Eger kullanicilarin
alt dizinleri
olusturmasina izin vermek istiyorsaniz "nodirs" yazan yeri siliniz.
4.Asagidaki komutlari uygulayin.
chown -R root.ftp ~ftp/incoming
chmod -R 1733 ~ftp/incoming
chown komutu ile "incoming" klasoru root kullanicisina ve ftp grubuna
dahil ediliyor.
chmod komutu ile "incoming" klasoru icin izinler belirleniyor."root"
icin "okuma yazma ve
calistirma" haklari, grup ve digerleri(tum dunya) icin ise "yazma ve
calistirma" izinleri verilmis
oluyor. Ayni zamanda bu komut ile "sticky bit" dedigimiz (1733 te yer
alan 1 rakami bunu
gosteriyor.) dosyalari silinmekten koruyan parca da dosya izinlerine
ekleniyor.Normalde yazma hakki
ile gelen dosya silme izni bununla yanlizca dosyanin sahibine
veriliyor...Yani sadece root
kullanicisi sunucuya yuklenen dosyalari silme hakkina
kavusuyor.(Sunucuya baglanan kisilere
herhangi bir okuma hakki vermedigimiz icin ~ftp/incoming klasorundeki
dosya adlari "ls -l" ile
goruntulenmezler.Eger kisi dosyanin adini biliyorsa halen dosyayi
download edebilir.)
5."isimsiz" kullanici icin /etc/ftpaccess dosyasinda "anonymous"
taniminin yazili olmasi
gereklidir.Bu dosya ongorulen olarak bu kayida sahiptir ve sizin
herhangi bir degisiklik yapmaniza
gerek yoktur..Eger bu dosyada "all" ile tanimli sinif icin
"real,guest,anonymous" yazan yeri
degistirdiyseniz bu dosyaya bu tanimlari tekrar eklemeniz gereklidir.
Guvenlik
"Halka acik bir FTP sunucusu kurmak" basli basina bir guvenlik
riskidir.Bu sunucuya dosya yukleme
izni vermek bu riski daha da arttirir.Dunya uzerinde bu isi yapan
sayisiz kurulus vardir ve
yillaraca herhangi bir problem olmadan sunucularini ayakta tutabilmeyi
basarmislardir.
Asagidaki maddelere goz atmaniz sizinde sorunsuz bir FTP sunucusu
yonetmeniz icin gereklidir :
/etc/passwd icinde yer alan 'ftp' kullanicisina ait sifre mutlaka
"gecersiz bir yapida"
olmalidir.Ornek vermek istersek :
ftp:*:14:50:FTP User:/home/ftp:/bin/true
~ftp/bin klasoru mutlaka root kullanicisina ait olmalidir.Bu klasor
icindeki hizmet yazilimlarida
(ls,tar, compress vb.) mutlaka root kullanicisina ait olmalidir.Bu klsor
icindeki dosyalar yanlizca
"uygulanabilir" dosya izinine sahip olmalidir (executable)
Tum bunlar icin asagidaki komutu uygulayin :
chown -R root.root ~ftp/bin; chmod -R 111 ~ftp/bin
~ftp/etc klasoru yanlizca root kullanicisina ait ve yanlizca
"uygulanabilir" dosya izinlerine sahip
olmalidir.
Tum bunlar icin asagidaki komutu uygulayin :
chown -R root.root ~ftp/etc; cd ~ftp/etc; chmod 444 *
Hic bir zaman /etc/passwd ve /etc/group dosyalarini ~ftp/etc klasorune
kopyalamayiniz.Burada yer
alacak /etc/passwd ve /etc/group dosyalari bazi programlari kandirmak
icin oradadir.Normalde
"chroot" kullanarak ayarlanan klasorden sunucu kok dizinine cikmak
imkansizdir.Bu nedenle bazi
programlar bu dosyaya gerek duyduklarinda orada olmalari gerektigi icin
oradadirlar.
~ftp klasorundeki hic bir dosya 'ftp' kullanicisina ait olamamalidir.
Halka acik (anonymous) FTP dosya sunucusu kurmak
Red-Hat Linux gibi bir cok bilgisayar yazilimi internet uzerinden
ucretsiz indirilebilir.Bunun
basarilmasini saglayan yapi "halka acik ftp sunucularinin" uzerine
kurulmustur.
Her dosya alis-verisi yapmak isteyen kisiye bir FTP hesabi acmak
pratikte mumkun degildir.Ancak bu
sekilde yapilandirilmis bir FTP sunucusu ile tum dunyaya acik bir
dagitim merkezi kurulunabilir...
"Halka Acik FTP Sunuculari" bilgisayar korsanlari icin en buyuk
nimettir.Bir sunucuya yanlizca
gerekli oldugunda boyle bir ozellik eklenmelidir.Ihtiyacimiz oldugu
varsayilarak asagidaki kurulum
yazisi harilanmistir :
Red Hat Linux isletim sistemi ile hic zorlanilmadan ve ucretsiz olarak
boyle bir FTP sunucusu
kurmak icin anonftp RPM paketi kullanilir.
Hemen bu isimde bir paketin sistemde yuklu olup olmadigina bakalim :
rpm -qa | grep anonftp
Eger sunucunuzda bu paket yuklu ise surum numarasi ile beraber ekrana
gelecektir.
herhangi bir cikti ekrana yazilmaz ise program sisteminizde yok
demektir. Red Hat Cd-Rom'undan bu
paketi asagidaki gibi yukleyebilirsiniz :
rpm -ivh anonftp-3.0-6.i386.rpm
Sisteminizin mimarisi ve CD-Rom'daki paketin surum numarasina gore
yukaridaki komutu kendinize gore
duzenlemeniz gereklidir.(Ornegin i386 pentium mimarisine sahip sistemler
icindir.)
Bu paket bir kez kurulduktan sonra "Halka acik FTP sunucusu" calismaya
hazirdir.
Onemli Not : Sisteminizde "ftp" isimli kullanici hesabi herhangi bir
sifre verilmemis olarak hazir
olmalidir. /etc/passwd dosyasi icinde "ftp" kullanci adina sahip hesap
icin :
ftp:*:14:50:FTP User:/home/ftp:/bin/true
sekinde bir kayit olup olmadigini kontrol ediniz...
Kurulumun nasil yapildigini gormek istiyorsaniz sagidaki gibi bir komutu
calistirabilirsiniz :
rpm -qlp anonftp-3.0-6.i386.rpm
Su anda kurulumla ilgili dosyalari goruyor olmalisiniz.Butun dosyalar
~ftp klasorune
yerlestirilir.(Bu klasor 'ftp' kullanicisi icin ev klasorudur.Bunun ne
oldugunu gormek icin
/etc/passwd dosyasina bakilmalidir.)
Bulundugunuz klasoru ~ftp olacak sekilde degistirin ve "ls -l" komutunu
calistirin.
[serkan@ns1 ~ftp]# ls -l
total 4
d-x-x-x 2 root root 1024 Nov 5 15:29 bin
d-x-x-x 2 root root 1024 Nov 5 15:29 etc
drwxr--xr--x 2 root root 1024 Nov 5 15:29 lib
dr--xr--sr--x 2 root ftp 1024 Sep 10 17:21 pub
seklinde bir ekran ciktisi goreceksiniz.simdi bin klasorune gecerek ls
-l komutunu bu klasorde
calsitriniz :
[serkan@ns1 ~ftp/bin]# ls -l
total 313
---x-x-x 1 root root 15236 Nov 5 15:29 compress
---x-x-x 1 root root 46356 Nov 5 15:29 cpio
---x-x-x 1 root root 45436 Nov 5 15:29 gzip
---x-x-x 1 root root 29980 Nov 5 15:29 ls
---x-x-x 1 root root 62660 Nov 5 15:29 sh
---x-x-x 1 root root 110668 Nov 5 15:29 tar
Bu hizmet yazilimlari FTP sunucusunda olmasi gereken yazilimlardir.
Ornegin ls programi klasorlerin
icerigini goruntulemek icin kullanilir.Peki bu yazilimlar neden burada
duruyorlar?
Cevap cok basit : Biz "halka acik sunucu kurarken" ~ftp klasorunu
(/home/ftp) "chroot" programiyla
sunucu icin kok klasor haline getiriyoruz.Bu durumda sunucunun diger
klasorlerine erisim mumkun
olmamaktadir.
Kullanicinin halka acik bu sunucuya baglanmasi halinde bazi hizmet
yazilimlarini (ornegin ls gibi)
kulanmasi sarttir.Bunlari /bin klasorune yerlestirip problemi cozmus
oluyoruz...
Sizde istediginiz uygulamalari /etc , /bin, ve /lib klasrlerinden alip
buraya
yerlestirebilirsiniz.Sunucu guvenligi icin bu klasorlerde mumkun
oldugunca az yazilim
bulundurulmalidir.
~ftp/lib klasoru ~ftp/bin klasorundeki programlarin ihtiyac duydugu
kitaplik dosyalarini
barindirir.
~ftp/pub klasoru sizin halka acik olarak dagitacaginiz yazilimlari veya
dosyalari koyabileceginiz
klasordur.
Eger bu "isimsiz" kullanicilara (halka acik FTP sunucusuna baglanan ve
kimlikleri belli olmayan
kisiler) sunucuya "dosya yukleme" yetkisi vermek isterseniz asagidaki
adimlari izlemeniz gereklidir
:
1.Yeni bir klasoru ~ftp dizini altinda "yuklenen dosyalarin saklanmasi"
icin yaratin.Bu klasor
genellikle "incoming" olarak isimlendirilir.Burada da "incoming" isminde
bir klasor yarattiginizi
kabul edecegiz.
2.Asagidaki satiri /etc/ftpaccess dosyaniza ekleyin :
upload /home/ftp /incoming yes root ftp 0600 nodirs
3.Yukaridaki satirda gecen /home/ftp klasoru'nun sizin sisteminizdeki
dogru yolu gosterdigine emin
olunuz.Ornegin sizin ~ftp klasorunuz ('ftp' kullanicisi icin ev dizini)
/data/ftp ise lutfen
yukaridaki ayarda /home/ftp yerine /data/ftp yaziniz.Eger kullanicilarin
alt dizinleri
olusturmasina izin vermek istiyorsaniz "nodirs" yazan yeri siliniz.
4.Asagidaki komutlari uygulayin.
chown -R root.ftp ~ftp/incoming
chmod -R 1733 ~ftp/incoming
chown komutu ile "incoming" klasoru root kullanicisina ve ftp grubuna
dahil ediliyor.
chmod komutu ile "incoming" klasoru icin izinler belirleniyor."root"
icin "okuma yazma ve
calistirma" haklari, grup ve digerleri(tum dunya) icin ise "yazma ve
calistirma" izinleri verilmis
oluyor. Ayni zamanda bu komut ile "sticky bit" dedigimiz (1733 te yer
alan 1 rakami bunu
gosteriyor.) dosyalari silinmekten koruyan parca da dosya izinlerine
ekleniyor.Normalde yazma hakki
ile gelen dosya silme izni bununla yanlizca dosyanin sahibine
veriliyor...Yani sadece root
kullanicisi sunucuya yuklenen dosyalari silme hakkina
kavusuyor.(Sunucuya baglanan kisilere
herhangi bir okuma hakki vermedigimiz icin ~ftp/incoming klasorundeki
dosya adlari "ls -l" ile
goruntulenmezler.Eger kisi dosyanin adini biliyorsa halen dosyayi
download edebilir.)
5."isimsiz" kullanici icin /etc/ftpaccess dosyasinda "anonymous"
taniminin yazili olmasi
gereklidir.Bu dosya ongorulen olarak bu kayida sahiptir ve sizin
herhangi bir degisiklik yapmaniza
gerek yoktur..Eger bu dosyada "all" ile tanimli sinif icin
"real,guest,anonymous" yazan yeri
degistirdiyseniz bu dosyaya bu tanimlari tekrar eklemeniz gereklidir.
Guvenlik
"Halka acik bir FTP sunucusu kurmak" basli basina bir guvenlik
riskidir.Bu sunucuya dosya yukleme
izni vermek bu riski daha da arttirir.Dunya uzerinde bu isi yapan
sayisiz kurulus vardir ve
yillaraca herhangi bir problem olmadan sunucularini ayakta tutabilmeyi
basarmislardir.
Asagidaki maddelere goz atmaniz sizinde sorunsuz bir FTP sunucusu
yonetmeniz icin gereklidir :
/etc/passwd icinde yer alan 'ftp' kullanicisina ait sifre mutlaka
"gecersiz bir yapida"
olmalidir.Ornek vermek istersek :
ftp:*:14:50:FTP User:/home/ftp:/bin/true
~ftp/bin klasoru mutlaka root kullanicisina ait olmalidir.Bu klasor
icindeki hizmet yazilimlarida
(ls,tar, compress vb.) mutlaka root kullanicisina ait olmalidir.Bu klsor
icindeki dosyalar yanlizca
"uygulanabilir" dosya izinine sahip olmalidir (executable)
Tum bunlar icin asagidaki komutu uygulayin :
chown -R root.root ~ftp/bin; chmod -R 111 ~ftp/bin
~ftp/etc klasoru yanlizca root kullanicisina ait ve yanlizca
"uygulanabilir" dosya izinlerine sahip
olmalidir.
Tum bunlar icin asagidaki komutu uygulayin :
chown -R root.root ~ftp/etc; cd ~ftp/etc; chmod 444 *
Hic bir zaman /etc/passwd ve /etc/group dosyalarini ~ftp/etc klasorune
kopyalamayiniz.Burada yer
alacak /etc/passwd ve /etc/group dosyalari bazi programlari kandirmak
icin oradadir.Normalde
"chroot" kullanarak ayarlanan klasorden sunucu kok dizinine cikmak
imkansizdir.Bu nedenle bazi
programlar bu dosyaya gerek duyduklarinda orada olmalari gerektigi icin
oradadirlar.
~ftp klasorundeki hic bir dosya 'ftp' kullanicisina ait olamamalidir.