LangTurk | vsftpd Virtual User Ayarları ve Yapılandırması

vsftpd Virtual User Ayarları ve Yapılandırması

1 Mayıs 2007, Salı 8 am | Yazan : webdr | 42 okunma |

| 42 okunma

Bu 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 |

Şansımı denemek istiyorum


  1. “vsftpd Virtual User Ayarları ve Yapılandırması” yazısına 5 yorum var

  2. 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?

  3. 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. :)

  4. 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.

  5. 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.

  6. 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?

Yorumlarınızı bekliyoruz!