vsftpd Virtual User Ayarları ve Yapılandırması
1 Mayıs 2007, Salı 8 am | Yazan : webdr | 42 okunma | | 42 okunmaBu makalemizde vsftpd (linux sunucular için) FTP server uygulamasına nasıl virtual user ekleyeceÄŸiz bundan bahsedeceÄŸim. En basitten baÅŸlayıp konuyu madde madde ele alan bir makale olmasını hedefliyorum. Umarım Türk kullanıcı arkadaÅŸlar bu makaleden tıpkı vsftpd FTP server kurulumu makalemizden yararlandıkları gibi yararlanırlar. Anlatıma geçmeden önce belirtmem gerekirki bu anlatım tüm linux dağıtımları için geçerlidir ve herhangi bir dağıtıma özel (debian, redhat vb…) notlar içermemektedir.
Virtual User Nedir?
Türkçesi Sanal Kullanıcı olan virtual user, kurduğunuz sisteme giriş yetkisi olmasa da (işletim sisteminizde kayıtlı bir kullanıcı) birazdan yapacağımız ayarlar sonucu FTP erişimi elde edebilecek, sizin belirlediğiniz FTP dizininde indirme ve gönderme yapabilecek harici kullanıcılara verilen isimdir. Sadece FTP kullanım amacıyla bir kimseye, sisteminizde kullanıcı olarak giriş izni vermektense FTP için giriş izni vermek sizinde gördüğünüz üzere daha güvenilir bir yöntemdir. İşte bu anlatımda biz vsftpd FTP sunucusu için virtual user(lar) oluşturup bunların sisteminize girmeden, kendilerine verilen FTP hesaplarını kullanmalarını sağlayacağız.
Bu kısa açıklamadan sonra virtual user oluşturma işlemine geçelim.
1-) Virtual User için veritabanı oluşturma.
Virtual userlar eriÅŸim kontrolü için öncelikle pam_userdb kullanacağız (DiÄŸer bir yöntem ise pam_pwdfile dosyası kullanılarak gerçekleÅŸtirilendir ancak ona deÄŸinmeyeceÄŸiz). pam_userdb veritabanı uygulaması, kullanıcı adlarını ve ÅŸifrelerini kullanabilmek için bir db (veritabanı) dosyasına ihtiyaç duyar. db biçiminde bir veritabanı dosyası oluÅŸturmak için öncelikle içerisnde kullanıcı adlarının ve ÅŸifrelerinin bulunduÄŸu bir metin dosyası (logins.txt) oluÅŸturmalıyız. Dikkat etmeniz gereken nokta bu metin dosyasındaki kullanıcı adı ve ÅŸifrelemelerin yazımıdır. Bir örnek daha iyi anlatır, diyelim kullanıcı adı “webdr”, ÅŸifreside “123456″, baÅŸka bir kullanıcımız daha var onun adıda “asnfist” ve ÅŸifresi “789″ olsun. Bu iki kullanıcı bilgilerinin bulunduÄŸu metin dosyası aÅŸağıdaki düzendeki gibi olmalı ve her satıra bir öğe (kullanıcı adı, ÅŸifre) gelmelidir.
webdr
123456
asnfist
789
Şimdi bu dosyayı bahsettiğim gibi (logins.txt) bir metin dosyası olarak kaydedelim (ect/vsftpd dizinine kaydederseniz bundan sonraki anlatımlarda sizin için kolaylık olur). Bu dosyanın amacı birazdan oluşturacağımız veritabanı dosyasına kaynak olmaktır. Diğer bir ifadeyle eğer sonradan bir kullanıcı eklemek isterseniz ve db dosyalarını düzenlemekle zaman kaybetmek istemiyorsanız. Bu noktaya dönmeli, logins.txt dosyasına gerekli kullanıcı eklemelerinı yapmalı ve bundan sonraki işlemleri tekrarlamalısınız.
Sıra veritabanı oluşturmaya geldi. Veritabanı oluşturmak için Berkeley DB kullanacağız (sisteminizde zaten bulunuyor olabilir) . O yüzden öncelikle kontrol etmelisiniz. Sadece bulunup bulunmadığı için değil sürümününde bizim için önemli olmasından dolayı. (komutu yazdığımda sürüm konusu açıklığa kavuşacak) , diğer taraftan eğer yüklü değilse yukardaki Berkeley DB yazısına tıklayarak kaynak kodlarına ulaşabilirsiniz ve kaynak kodlardan programı kurabilirsiniz.
Sisteme root olarak giriş yaptınız ve cd komutu ile logins.txt dosyasını kaydettiğiniz dizine geldiniz. Komut satırına aşağıda verdiğim komutu yazarak kullanacağımız veritabanını oluşturacağız.
db4_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
Bu komutu kısaca açıklamam gerekirse, db4_load ki en önemliside budur, db4 ; Berkeley DB sürüm 4 demektir, eğer önceden kontrol ettiğinizde sisteminizde 3 yüklü ise db3 olarak değiştirin, ancak bunlara rağmen en sonunda bir sonuca ulaşamazsanız geri buraya dönüp direk db_load olarak girin komutu lütfen.
Bu komut sonrasında /etc/vsftpd/ klasöründe vsftpd_login.db adında bir veritabanınız oluşacak. Yine veritabanı ile ilgili önemli noktalardan biri veritabanına gerekli yetkileri vermekle ilgilidir. O yüzden yeni oluşturduğumuz veritabanına aşağıdaki komutla bir erişim yetkisi atıyoruz.
chmod 600 /etc/vsftpd/vsftpd_login.db
Bu aşamayıda geride bırakınca içerisinde virtual userlarınızın bilgilerinin bulunduğu bir veritabanınız var demektir.
2-) Veritabanınızı kullanacak PAM dosyasını oluşturmak.
Bu dosya sayesinde PAM uygulamasının, bu dosyaya girerek erişim isteyen kullanıcının bilgilerinin geçerliliğini kontrol etmesini sağlamış olacağız.
Öncelikle /etc/vsftpd/ dizininde vsftpd.pam adlı bir dosya oluşturalım ve içerisine aşağıdaki kodları yerleştirelim.
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
Daha sonra oluşturduğumuz bu vsftpd.pam dosyasını
/etc/pam.d/
yani kendi dizinine taşıyalım.
3-) Virtual userlar için dizin belirlemek ve virtual kullanıcısını sisteme eklemek
Aşağıdaki komut ile sisteminize virtual user ekleyeceksiniz ancak bu virtual user ile ilgili hiçbir bilgiyi vermeyeceğiniz için güvenlik açısından birşey değişmeyecek, siz sadece logins.txt dosyası içine yerleştirdiğiniz şifre ve kullanıcı adını, kullanıcılarınıza vereceksiniz.
useradd -d /home/ftpsite virtual
Bu komut ile varsayılan dizini /home/ftpsite olan virtual user eklediniz. Virtual user olarak FTP girişi yapan kimseler bu dizine uğrayacaklardır.
İpucu: Belirttiğiniz klasörü kullanan kaç virtual user var görmek için komut satırına
ls -ld /home/ftpsite
yazın.
4-) Virtual User için vsftpd.conf dosyasının yapılandırılması
Aşağıdaki komutları zaten yapılandırmış olduğunuz vsftpd.conf dosyasının sonuna ekleyin lütfen, açıklamaları ile birlikte anlatacağım.
A-) chroot_local_user=YES
Bu komut ile virtual userlarin /home/ftpsite dışında gezmelerini önlersiniz.
B-)
guest_enable=YES
guest_username=virtual
Bu iki komut virtual user kullanımına aktive etmeniz için yapılandırma dosyasına eklemeniz gereken en önemli komutlardır. İkisinide istisnasız ekleyin.
Bu değişiklikleri yaptıktan sonra vsftpd dosyasını kaydedin ve vsftpd uygulamasını başlatıp, belirlediğiniz virtual user kullanıcı adı ve şifreleri ile giriş yapın.
Eğer bir sorunla karşılaşırsanız buyrun beraber çözeriz ama daha öncesinde makaleyi ayrıntılı okuduğunuzdan emin olun.
Hepinize iyi çalışmalar dilerim.
webdr
Bu Yazıyı Paylaşın: Bağcık |Webiket |Oyyla |LinkiBol |Favorri |Tusul |del.icio.us |

“vsftpd Virtual User Ayarları ve Yapılandırması” yazısına 5 yorum var
Deja-Vu demiÅŸ ki;
1 Mayıs 2007, Salı 7 pm | Cevapla
Selam,
Bu kadar hızlı yardımcı olduÄŸun için çok saol. Yüzsüzlük yapıp bi ÅŸey daha sorabilir miyim? Bi tane sanal kullanıcım mesela ‘ahmet’ kendi klasörünü ve aynı zamanda ‘mehmet’in klasörünü görüp ‘faruk’un klasörünü göremiyeceÄŸi bir ayar olabilir mi?
webdr demiÅŸ ki;
2 Mayıs 2007, Çarşamba 1 am | Cevapla
Merhaba,
Tabi bunun için vsftpd.conf dosyasına birkaç ekleme yapmanız yeterli olacaktır. Bu eklemeleri
guest_enable=YES
guest_username=virtual
satırının altına ya da üstüne bir yerlere ekleyin. Ama daha önce virtual userlarınız için /home/ftpsite altında ayrı bir dizin oluşturun. Mesela
mkdir -p /home/ftpsite/ahmet
mkdir -p /home/ftpsite/mehmet
Önceden belirttiğim vsftpd.conf içine ekleyeceğiniz kodlar ise
user_sub_token=$USER
local_root=/home/ftpsite/$USER
Kolay gelsin.
Deja-Vu demiÅŸ ki;
3 Mayıs 2007, Perşembe 12 am | Cevapla
Selam,
yazanları adım adım uyguladım kontrol ede ede fakat ftp client programından virtual userlar açılmadı. Hatta açılan normal sistem kullanıcılarıda açılmaz oldu. Eksik bi şey olabilir mi?
belki yardımcı olur vsftpd.conf dosyasına eklenen,
guest_enable=YES
guest_username=virtual
komutlarının başına # işaretlerini koyup etkinsizleştirdiğimde normal kullanıcalarla girebiliyorum kaldırınca işaretleri giremiyorum.
webdr demiÅŸ ki;
3 Mayıs 2007, Perşembe 7 am | Cevapla
db4-load kısmı ile ilgili bir sorundur lütfen o bölüme ve hangi db sürümünü kullandığınıza iyi bakın.
kolay gelsin.
Mesut ARSLAN demiÅŸ ki;
9 Temmuz 2008, Çarşamba 3 am | Cevapla
ftp> open site.com
yazıyorum.
421 Service Not available, remote server has closed connection
Mesajını alıyorum
ftp> open localhost
yazdığımda şifre soran bir satır geliyor. şifre yazsamda boşta geçsem
530 this FTP server is anonymous only.
Login failed.
hatasını alıyorum. Sizce sorun nedir?