original in de Mario M. Knopf
de to en Jürgen Pohl
en to tr:Erdal Mutlu
Mario, Linux, ağlar ve güvenlik ile ilgili diğer konularla uğraşmaktan çok keyif alıyor. Boş zamanlarında neo5k.org ve linuxwallpapers.de sanaldoku yörelerinin bakımıyla ilgilenmektedir.
FTP veri aktarımında, verilerin gidişini sağlayan bağlantı denetimli TCP (Transmission Control Protocol) protokolünü kullanmaktadır. Dolayısıyla, FTP'nin veri aktarırken paket kaybı veya hata denetimi konularında endişe etmesine gerek yoktur. Kısaca ifade etmek gerekirse, TCP paketlerin bir defa,hatasız ve düzgün sırada aktarıldğını sağlamaktadır.
Veri aktarımı üç farklı türlü olmaktadır. Stream'in (duraksız,akım) sonunu dosya sonu (end-of-file EOF) belirlerken, diğer ikisinin sonunu da kayıt sonu (end-of-record EOR) belirlemektedir.
Bunun yanısıra iki farklı aktarma kipi vardır:
ASCII kipi metin dosyaların aktarımında kullanılmaktadır. Binary (ikili) kipinde de program ve benzeri dosyaların aktarımında kullanılmaktadır. Şimdilerde kullanıcı bu iki kip arasında değiştirme yapmasına gerek yoktur, çünkü FTP istemcileri bunu otomatik olarak yapmaktadır.
Kullanıcı kimliklendirme sırasındaki kullanıcı adı ve geçişsözcüğü kriptolanmadığı için buradaki olası güvenlik riskine işaret etmek çok önemlidir. Bu konu FTP hakkındaki güvenlik kaygılarının nedenini oluşturmaktadır. Kasım 1997'deki RFC 2228[2] yayımlanmasıyla FTP'ye güvenlik odaklı eklemeler yapıldı.
vsftpd "very secure FTP daemon" (çok güvenli FTP sunucusu) isminden de anlaşılacağı üzere, programın geliştiricisi olan Chris Evans'ın en önemli endişesinin güvenlik olduğu hemen anlaşılmaktadır. Tasarımda ve geliştirmenin başından beri yüksek güvenlik FTP sunucusunun odak noktası olmuştur.
Sunucunun güvenlik odaklı olmasına bir örnek, vsftpd'nin yeni ana dizinini(1) atanmış ve bu dizin dışındaki program ve dosyalara ulaşımın olmadığı, başka bir deyişle bu dizine 'kilitlendiği' denilen, chroot kipinde çalışıyor olması gösterilebilir. FTP sunucusu kırıldığında, kırıcı sistemin diğer kısımlarından ayrılmış olacak ve daha fazla zarar vermesi engellenmiş olacaktır. chroot hakkında daha fazla bilgi için [3] nolu yazıya bakınız. [4] nolu yazı vsftpd'ye özgü güvenlik konuları hakkındadır.
Birçok özelliği ve yüksek güvenlik gereksinimlerini karşılamasıyla FTP sunucuları arasından vsftpd oldukça yukarılarda yer almaktadır.
Kaynak kodun olduğu paketi indirdikten sonra, tar dosyasını açın ve ilgili dizine geçerek make komutunu çalıştırın. Bunun yapılışı aşağıda gösterilmiştir:
neo5k@phobos> tar xzvf
vsftpd-x.x.x.tar.gz
neo5k@phobos> cd vsftpd-x.x.x
neo5k@phobos> make
neo5k@phobos> mkdir /var/ftp
neo5k@phobos> useradd -d /var/ftp ftp
neo5k@phobos> chown root.root /var/ftp
neo5k@phobos> chmod og-w /var/ftp
neo5k@phobos> make install
Man sayfaları ile program sistemdeki ilgili yerlere yerlere kopyalanabilir. Beklenmedik bir karışıklık durumunda bu işlem elle de yapılabilir.neo5k@phobos> cp vsftpd /usr/sbin/vsftpd
neo5k@phobos> cp vsftpd.conf.5 /usr/share/man/man5
neo5k@phobos> cp vsftpd.8 /usr/share/man/man8
neo5k@phobos> cp vsftpd.conf /etc
# Açıklama satırı
# Anonymus FTP-access permitted?
YES/NO
anonymous_enable=NO
# Permit anonymus upload? YES/NO
anon_upload_enable=NO
# Permission for anonymus users to make new directories?
YES/NO
anon_mkdir_write_enable=NO
# Permission for anonymus users to do other write operations
- like renaming or deleting? YES/NO
anon_other_write_enable=NO
# Log on by local users permitted? YES/NO
local_enable=YES
# Shall local users be locked into their home directory?
YES/NO
chroot_local_user=YES
# Highest permitted data transfer rate in bytes per second
for local logged on users. Default = 0 (unlimited)
local_max_rate=7200
# General write permission? YES/NO
write_enable=YES
# Enable messages when changing directories? YES/NO
dirmessage_enable=YES
# Welcome banner at users logon.
ftpd_banner="Welcome to neo5k's FTP service."
# Activate logging? YES/NO
xferlog_enable=YES
# Logging of all FTP activities? YES/NO
# Careful! This can generate large quantities of
data.
log_ftp_protocol=NO
# Confirm connections are established on port 20 (ftp data)
only. YES/NO
connect_from_port_20=YES
# Timeout during idle sessions
idle_session_timeout=600
# Data connection timeout
data_connection_timeout=120
# Access through Pluggable Authentication Modules
(PAM)
pam_service_name=vsftpd
# Standalone operation? YES/NO - depending on operation mode
(inetd, xinetd, Standalone)
# The author's FTP service is being startet with xinetd,
therefore the value here is NO.
listen=NO
neo5k@phobos> vi /etc/inetd.conf
# ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd ftp stream tcp nowait root /usr/sbin/tcpd vsftpd
# vsftp daemon. service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 192.168.1.3 banner_fail = /etc/vsftpd.busy_banner log_on_success += PID HOST DURATION log_on_failure += HOST nice = 10 }
# Shall the vsftp daemon run in standalone
operation? YES/NO
listen=YES
neo5k@phobos> /usr/sbin/vsftpd &
Sunucunun bulunduğu dizin PATH çevre değişkeninde düzgün bir şekilde yeralıyorsa, sunucuyu aşağıdaki gibi de başlatabilirisiniz:neo5k@phobos> vsftpd &
Aşağıdaki komutla sunucunun arama yoltanımında yer alıp almadığını denetleyebilirsiniz:neo5k@phobos> echo $PATH
/usr/sbin:/bin:/usr/bin:/sbin:/usr/X11R6/bin
neo5k@phobos> ftp phobos Connected to phobos 220 "Welcome to neo5k's FTP service." Name (phobos:neo5k): testuser 331 Please specify the password. Password: 230 Login successful Remote system type is UNIX. Using binary mode to transfer files. ftp> ls -l 229 Entering Extended Passive Mode 150 Here comes the directory listing drwxr-xr-x 11 500 100 400 May 07 16:22 docs drwxr-xr-x 9 500 100 464 Feb 01 23:05 hlds drwxr-xr-x 39 500 100 4168 May 10 09:15 projects 226 Directory send OK. ftp>
Tabii bu yazı, vsftpd'nin sunduğu sayısız seçenekler göz önünde bulundurursa, bu yazı sadece kısa bir giriş niteliğinde olduğunu hemen söyleyebiliriz. vsftpd'yi yakından incelemek isteyenler, projenin[6] sanaldoku yöresini ziyaret edebilir ve oradaki belgelerden yararlanabilirler.