Halihazırda çalışan bir ProFTPD sunucuda mod_clamav modülünü devreye almak istediğimizde ProFTPD’yi patch’leyip, tekrar derlememiz gerekiyor: link

Ancak production’daki bir sistemde uygulamayı tekrar derlemek istemeyebiliriz. Neyse ki alternatif bir yöntem daha var.

Bunun için ProFTPD’nin DSO (Dynamic Shared Objects) modülü ile derlenmiş olması gerekiyor. DSO modülü, uygulamaya çalışma zamanında yeni modüller eklememizi sağlıyor. mod_clamav’ı da bu modül yardımıyla kuracağız. Centos için ProFTPD paketi rpmforge depolarında bulunuyor, rpmforge’daki paket de bu modül ile birlikte derlenmiş halde geliyor:

# proftpd -l 

Compiled-in modules:
  mod_core.c
  mod_xfer.c
  mod_auth_unix.c
  mod_auth_file.c
  mod_auth.c
  mod_ls.c
  mod_log.c
  mod_site.c
  mod_delay.c
  mod_facts.c
  mod_dso.c
  mod_ident.c
  mod_readme.c
  mod_auth_pam.c
  mod_tls.c
  mod_cap.c
  mod_ctrls.c

Bu komutun çıktısında mod_dso.c satırını görüyorsak, DSO modülümüz aktif demektir.

mod_clamav’ı aktive etmek için önce gerekli paketleri kuruyoruz:

yum install -y proftpd-devel clamav-devel libacl-devel

Sonra da Github’dan modülün kodlarını alarak, DSO modül olarak derliyoruz:

git clone https://github.com/jbenden/mod_clamav
prxs -c -i -d mod_clamav.c

Derlediğimiz modülü aktif hale getirmek için /etc/proftpd.conf içerisine şu satırları ekliyoruz:

<IfModule mod_dso.c>
    LoadModule mod_clamav.c
</IfModule>

<IfModule mod_clamav.c>
   ClamAV on
   ClamServer 127.0.0.1
   ClamPort 3310
</IfModule>
# proftpd -vv

ProFTPD Version: 1.3.4a (maint)

  Scoreboard Version: 01040003

  Built: Fri Jan 20 2012 17:30:05 EST

Loaded modules:
  mod_clamav/0.13
  mod_ctrls/0.9.4
  mod_cap/1.1
  mod_tls/2.4.3
  mod_auth_pam/1.1
  mod_readme/1.0
  mod_ident/1.0
  mod_dso/0.5
  mod_facts/0.3
  mod_delay/0.7
  mod_site.c
  mod_log.c
  mod_ls.c
  mod_auth.c
  mod_auth_file/0.9
  mod_auth_unix.c
  mod_xfer.c
  mod_core.c

Loaded modules kısmında mod_clamav/0.13 gibi bir satır görüyorsak, kurulum başarılı olmuş demektir.

Bu işlemlerin ardından FTP servisini restart ederek işlemi tamamlıyoruz.

Modülün düzgün çalıştığını görmek için test amaçlı kullanılan bir virüs olan Eicar‘ı kullanabilirz. Eicar’ı upload etmeye çalıştığımızda ProFTPD loglarında şuna benzer satırlar görünecektir:

1
2
Sep 02 15:45:31 webserver proftpd[5355] 127.0.0.1 (99.348.243.142[99.348.243.142]): mod_clamav/0.13: vwd=/public_html fh_path=/public_html/eicar.com chroot=/webpages/test.com cwd=/public_html buf=/public_html
Sep 02 15:45:31 webserver proftpd[5355] 127.0.0.1 (99.348.243.142[99.348.243.142]): mod_clamav/0.13: Virus 'Eicar-Test-Signature' found in '/webpages/test.com/public_html/eicar.com'

Bu satırları görebiliyorsak, modülümüz düzgün bir şekilde kurulmuş ve çalışıyor demektir.