Perşembe, Kasım 27, 2008

Solaris 10'da vsftpd FTP sunucusu kurulumu

Ortamımızda bir FTP sunucusu ihtiyacı olduğunda ilk aklıma gelen Solaris 10'la birlikte gelen FTP sunucusunu kullanmaktı. Ancak temel kurulumlar bitip de uygulamaya aldığımda gördüm ki, logon olan tüm kullanıcılar (/) root klasörüne dek ilerleyebiliyorlar ve bunu engelleyemiyordum. Oysa benim ihtiyacım her kullanıcının yalnızca kendi klasöründe FTP okuma-yazma işlemlerini yapmasıydı. Biraz araştırınca FTP dünyasında bunun adının "FTP jailing" olduğunu ve bu konuda en başarılı yazılımın vsftpd olduğunu öğrendim.

Kuruluma geçmeden önce FTP kullanıcıları için oluşturduğum temel standartlar ve bunları nasıl gerçekleştirdiğim hakkında da bir iki trikten bahsetmek istiyorum.

- Sunucunun yalnızca FTP ve SSH portlarının açık olması ve olabildiğince az saldırı yüzeyine sahip olması isteniyor.

Çözüm : Solaris 10'la gelen güvenli kurulum özelliği bunu fazlasıyla sağlıyor. Kurulum sonrası sunucuda yalnızca FTP, SSH ve bir adet RPC portu açıktı. (111 nolu bu portun da ne işe yaradığını öğrenip sorun çıkmayacaksa kapatmak için araştırmasını yapıyorum.)

- Kullanıcıların FTP sunucusuna SSH veya Telnet ile bağlanmaları istenmiyor. Kullanıcılar yalnızca FTP ile bağlanabilmeliler.

Çözüm :

#touch /bin/true
#chmod 555 /bin/true


/etc/passwd dosyasında oluşturulan her kullanıcı hesabı için shell değerinin aşağıdaki gibi verilmesi :

uygulama:x:5200:520:uygulama kullanici hesabi:/data/ftp/kaz:/bin/true


Aşağıda bahsedeceğim prosedürü oluşturan çalışma ortamını sağlayana dek biraz uğraştım. Ama elde ettiğim sonucu başkalarının da aynı acıları çekmeden :) uygulayabilmesi için olabildiğince basit bir prosedür şeklinde yazmaya çalıştım.

0) # svcadm disable ftp
1) # pkgadd -d vsftpd-2.0.7-sol10-x86-local
2) # mkdir /usr/share/empty
3) # vi /etc/inetd.conf

(aşağıdaki satırlar dosyaya eklenir)
# vsftp konfigurasyonu yapiliyor
ftp stream tcp nowait root /usr/local/sbin/vsftpd


4) # init 6
5) # inetconv -i /etc/inet/inetd.conf


6) # vi /etc/vsftpd.conf

(dosya aşağıdaki parametrelerle oluşturulur)
# Access rights
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

# Security
anon_world_readable_only=YES
connect_from_port_20=YES
hide_ids=YES
pasv_min_port=50000
pasv_max_port=60000

# Features
xferlog_enable=YES
ls_recurse_enable=NO
ascii_download_enable=NO
async_abor_enable=YES

# Performance
# one_process_model=YES
idle_session_timeout=120
data_connection_timeout=300
accept_timeout=60
connect_timeout=60
anon_max_rate=50000

# Diger
xferlog_file=/var/log/vsftpd.log
ftpd_banner=Bilgi Teknolojileri FTP sunucusu.
chroot_local_user=YES


7) init 6

Eğer yukarıdaki ayarları aynen uyguladıysanız şu an FTP sunucunuz FTP Jail özelliğini de kullanarak çalışıyor olmalıdır.