How to integrate ClamAV into Pure-FTPd for virus scanning

Posted In FTP - By Tum. On Friday, April 15th, 2011 With 0 Comments

pure-ftpd and clamav
ปัญหาอย่างหนึ่งของการทำเวปคือ เครื่อง computer ของ webmaster ได้ติดไวรัสหรือโทรจันโดยที่ไม่รู้ตัว เมื่อมีการ upload ไฟล์ขึ้น server อาจเกิดเหตุการที่ไวรัสหรือโทรจันได้แก้ไข script หรือไฟล์ html ต่างๆ ให้มีโค๊ดที่ไม่พึงประสงค์เข้าไปยังไฟล์ดังกล่าว ซึ่งวิธีการแก้ไขทางฝั่ง webmaster อย่างเดียวอาจจะยังไม่เพียงพอ ดังนั้นในบทความนี้จะนำเสนอวิธีการคอนฟิกให้ FTP server สามารถ scan virus กับไฟล์ต่างๆที่ได้ upload เข้าสู่ระบบ เพื่อเสริมการป้องกันอีกระดับหนึ่งให้กับ server ของเรา

วิธีการติดตั้งในบทความนี้ได้แก้ไขให้มีการเขียน log สำหรับตรวจสอบย้อนหลัง โดยเราสามารถรู้ว่า user ได้ upload ไฟล์ชื่ออะไรและติดหรือไม่ติดไวรัส ส่วนไฟล์ที่ถูกตรวจพบว่าติด virus ก็จะถูกย้ายไปเก็บไว้ที่ /var/spool/FtpQuarantine แทนการถูกลบออกจากระบบ

*ในบทความนี้จะไม่ขอกล่าวถึงวิธีการติดตั้ง pure-ftpd แต่สามารถดูวิธีการติดตั้ง pure-ftpd ได้ที่ (กำลังเขียน…)

สำหรับ software ที่ใช้มี pure-ftpd และ clamav (Free anti-virus) เท่านั้น และวิธีการสามารถทำได้ตามขั้นตอนด้านล่างนี้ได้เลยครับ :)

  1. ติดตั้ง clamav โดยใช้คำสั่ง (ดูวิธีการ install clamav for Centos 5)

  2. แก้ไขไฟล์ /etc/pure-ftpd/pure-ftpd.conf ที่บรรทัด CallUploadScript ให้เป็น yes (หรือ uncomment) เพื่อให้สามารถรัน script ตรวจสอบไวรัสที่จะสร้างขึ้นได้ ดังตัวอย่างด้านล่าง

  3. สร้างไฟล์ clamav_check.sh ไว้ที่ /etc/pure-ftpd โดยใช้คำสั่ง

    และใส่ code ด้านล่างเข้าไป

  4. สร้างไฟล์ clamav_check.py ไว้ที่ /etc/pure-ftpd โดยใช้คำสั่ง

    และใส่ code ด้านล่างเข้าไป

  5. รันคำสั่ง pure-uploadscript ตามตัวอย่างด้านล่าง เพื่อให้ pure-ftpd รัน clamav_check.sh หลังจากที่ได้ upload ไฟล์เสร็จแล้ว
  6. แก้ไขไฟล์ /etc/rc.local โดยเพิ่ม

    /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh

  7. restart pure-ftpd service ด้วยคำสั่ง
  8. เพิ่ม cron job ให้กับ freshclam (update signature) ตามด้านล่าง

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*