Pure-FTPd Server ClamAV Entegrasyonu- FreeBSD
Warning: mysqli_query(): (HY000/3): Error writing file '/tmp/MYtPbuTf' (Errcode: 28 - No space left on device) in /usr/share/nginx/html/syslogs/wp-includes/class-wpdb.php on line 2349
FTP server olarak pure-ftpd'yi tercih ediyorsanız, sununucuyu Clamav ile birlikte çalışacak şekilde set edebilir ve upload edilen dosyaların taranmasını ve virüs içerenlerin otomatik olarak silinmesini sağlayabilirsiniz. |
Özellikle bir çok kişinin bağlanıp dosya uploadı yaptığı ftp sunucuları için gönderilen dosyaların bilinen virüslere karşı taranıp temizlenmesi mantıklı bir yaklaşımdır. Bu nedenle, yazının devamında, bir pure-ftpd sunucusuna clamav entegrasyonunun nasıl yapılabileceğinden bahsedeceğim.
Başlarken
Yazıda ayrıca pure-ftpd kurulumu anlatmayacağım. Dolayısı ile devam edebilmek için sisteminizde pure-ftpd'nin halihazırda kurulu ve düzgün olarak çalışıyor olması gerekmektedir. freebsd sistemler için http://www.syslogs.org/mysql-destekli-pure-ftpd-kurulumu/ adresinde bir kurulum dökümanı bulabilirsiniz.
İşlemler sisteme clamav kurup, pure-ftpd'ye dosya upload'larında clamdscan'i çalıştırarak dosyayı tarayacak bir scripti çağırmasını söylemekten ibaret. Sisteminiz freebsd olmasa da yapılandırma işlemleri hemen hemen aynıdır, dolayısı herhangi bir linux dağıtımı kullanıyor olsanız bile en azından ile fikir vermesi açısından yazıdan yararlı olabilir.
Clamav Kurulumu
Öncelikli olarak sisteme clamav kurmak gerekiyor. freebsd sistemlerde bu işlemi klasik olarak port ağacından yapıyoruz. (Kurulumu yapmadan önce port ağacınızın güncel olduğundan emin olun. Güncellemek isterseniz portsnap kullanarak bu işlemi kolayca yapabilirsiniz.)
# cd /usr/ports/security/clamav # make install clean
Kurulumun ardından, clamd servisini startup'a ekliyoruz ve başlatıyoruz.
# echo 'clamav_clamd_enable="YES"' >> /etc/rc.conf # /usr/local/etc/rc.d/clamav-clamd start
Şimdi de, clamav db'sini güncelliyoruz.
# freshclam
Clamav'ın güncellenmesinden sonra, pure-ftpd yapılandırmasına geçebiliriz.
Pure-FTPd Yapılandırması
Bu aşamada öncelikle, sunucuya dosya upload'ı yapıldığı zaman, pure-ftpd'nin clamdscan'i çağırması ve tarama işlemini yapmasını sağlamak için bir script oluşturmak gerekiyor. Ben, pure-ftpd dosyaları /usr/local/etc dizini altında durduğu için bu script dosyasını aynı dizinde clamd-scan.sh ismi ile oluşturuyorum:
Önce dosyayı açalım:
# vi /usr/local/etc/clamd-scan.sh
Sonra da aşağıdaki ibareleri dosya içerisine yapıştırıp kaydedelim:
#!/bin/sh /usr/local/bin/clamdscan --remove --quiet --no-summary "$1"
Gördüğünüz gibi script dosyamız clamdscan'i çağırıp dosyanın taranmasını ve virüs içeren dosyaların sessizce silinmesini sağlıyor. Şimdi bu dosyanın çalıştırılabilmesi için gerekli izinleri veriyoruz.
# chmod 755 /usr/local/etc/clamd-scan.sh
Script dosyası hazırlandıktan sonra pure-ftpd'nin her dosya uploadında bu betiği çağırmasını sağlamak için gerekli tanımlamaları yapalım. Bu işlem için /usr/local/etc/pure-ftpd.conf dosyasını editliyoruz.
# vi /usr/local/etc/pure-ftpd.conf
İlk olarak aşağıda görülen Umask satırını bulun. Buradaki umask değeri upload edilen dosya ve dizinler için uygulanacak izin değerlerini atamaktadır ve default değer gördüğünüz gibi 133:022 yani dosyalar için 644 dizinler için 755'dir. Eğer yeni upload edilen dosyalar clamdscan tarafından okunamazsa tarama işlemi gerçekşeltirilemez bu nedenle dosyaların clamdscan tarafından okunabilmesi için aşağıdaki şekilde 644'e tekabül edecek şekilde herkes tarafından okunabilir olduğundan emin olun.
Umask 133:022
Not: Pure-ftpd sunucusunu kullanici dizinlerini chroot ortamına aldığı için dosyaların herkes tarafından okunabilmesi, ftp kullanıcılarının birbirlerinin dosyalarını görebilecekleri anlamına gelmemektedir.
Dosya izinleri konusunu düzenledikten sonra aynı dosya için aşağıda görülen #CallUploadScript yes satırının başındaki # işaretini kaldırarak upload scriptinin çağırılacağını söylüyoruz.
CallUploadScript yes
Şimdi dosyayı kaydedip çıkabiliriz. Son olarak rc.conf dosyasında upload scriptimizin yerini belirtip startup'a ekleyeceğiz. Böylece pure-ftpd başladığı zaman upload scripti de başlatılacak ve virüs tarama işlemleri için hazır olacak:
rc.conf dosyasını editleyelim:
# vi /etc/rc.conf
Dosya içerisinde pureftpd_enable=”YES” satırının en altına aşağıdaki satırları ekleyelim.
pureftpd_upload_enable="YES" pureftpd_uploadscript="/usr/local/etc/clamav_check.sh"
Son olarak pure-ftpd'yi yeniden başlatıyoruz.
# /usr/local/etc/rc.d/pure-ftpd restart
Böylece upload scripti de devreye girecektir:
Stopping pureftpd. Stopping /usr/local/sbin/pure-uploadscript. Starting pureftpd. Running: /usr/local/sbin/pure-ftpd -g/var/run/pure-ftpd.pid -A -c50 -B -C8 -D -E -fftp -H -I15 -lmysql:/usr/local/etc/pureftpd-mysql.conf -L2000:8 -m4 -s -U033:033 -u100 -i -R -j -k99 -Z -o Starting /usr/local/sbin/pure-uploadscript.
Herşey yolunda gittiyse bir test yaparak durumu kontrol edebilirsiniz.
Misal olarak http://www.eicar.org/anti_virus_test_file.htm adresinden edindiğimiz bir test virus dosyasını sunucuya upload edelim:
ftp> mput eicar.com.txt mput eicar.com.txt? y 200 PORT command successful 150 Connecting to port 43015 226-File successfully transferred 226 0.003 seconds (measured here), 21.31 Kbytes per second 68 bytes sent in 0.00 secs (142.2 kB/s)
Dosya upload edilmiş görünüyor ancak, clamd loglarına bakarsanız; tespit edildiğini (ve silindiğini) göreceksiniz.
# tail -n 10 /var/log/clamav/clamd.log /usr/home/ftperisimi/eicar.com.txt: Eicar-Test-Signature FOUND
Hepsi bu kadar.
Bu yazılar da ilginizi çekebilir:
- FreeBSD – Pure-ftpd: [ERROR] Unable to find the ‘ftp’ account”
- Mysql Destekli Pure-FTPD Kurulumu
- Pure-Ftpd – md5 Encrypted Kullanıcı Şifrelerinin Değiştirilmesi
- ClamAV – Security Warning: No Support For Digital Signatures
- FreeBSD üzerine Rsyslog Kurulumu ve Yapılandırması
Yorumlar
Trackbacks
- Gadget Newz
- Tweets that mention Pure-FTPd Server ClamAV Entegrasyonu - Virüs Scan for Pure-FTPd | Syslogs -- Topsy.com
- Sayı28: Dikkat Çeken Yazılar | NETSEC AĞ VE BİLGİ GÜVENLİĞİ TOPLULUĞU
Yorumda bulunun.