הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - סריקת ווירוסים לאחר העלאה (https://hosts.co.il/forums/showthread.php?t=39847)

Dr-Host 14-02-07 16:40

[מדריך] PHP - סריקת ווירוסים לאחר העלאה
 
לאחרונה בזמן שבניתי את אחת מן המערכות האחרונות שלי היה לי צורך לסרוק קבצים לאחר ההעלה לשרת לווירוסים לפי שאני משתמש ב move_uploaed_file
לאחר חיפושים רבים ברשת מצאתי את הפתרון, ברוב השרתים בארץ לפחות מותקן אנטי ווירוס מסוג ClamAv אשר סורק ווירוסים דרך שרת הדואר Exim, Sendmail, Qmail או כול שרת דואר אחר לשרתי לינוקס
לאחר קצת כאב ראש וחיפוש מצאתי מודל לPHP אשר נכתב ע"י Geffrey Velasquez למודל קוראים php-ClamAvLib
במדריך זה אפרט על התקנת המודל והגדרתו בשרת שימו לב כי יש צורך בגישת ROOT לשרת, בסוף המדריך אני ייתיחס קצת להתקנת ClamAv עצמו במידה ואינו עדיין מותקן במערכת.

שלב א) הורדת קבצי ה Source של המודל עליכם להוריד את קובץ ה TAR.GZ

קוד:

wget http://www.phpclamavlib.org/download/sources/php-clamavlib-0.12a.tar.gz
נכון לכתיבת מדריך זה זהוי הגירסה האחרונה לפי התקנה מומלץ לגשת לאתר המודל ולבדוק האם קיימת גירסה עדכנית יותר כתובת האתר: http://www.phpclamavlib.org

שלב ב) פתחו את קובץ ה TAR.GZ ע"י הפקודה הבאה ובצעו את הפעולות הבאות:
קוד:

tar -zxf php-clamavlib-*.tar.gz

cd php-clamavlib*

phpize

./configure --with-clamav

make

cp modules/clamav.so /usr/local/lib/php/extensions/

שלב ג) עכשיו אנו נגדיר את ה PHP.INI בצעו חיפוש ל PHP.INI שלכם ע"י הפקודה locate php.ini

אצלי הקובץ נמצא ב:
קוד:

/usr/local/lib/php.ini
אנו נערוך את הקובץ באמצעות עורך הטקסט מועדף אליכם ונוסיף בסוף הקובץ את השורות הבאות:

קוד:

extension=/usr/local/lib/php/extensions/clamav.so
[clamav]
clamav.dbpath="/usr/local/share/clamav"
clamav.maxreclevel=0
clamav.maxfiles=0
clamav.archivememlim=0
clamav.maxfilesize=0
clamav.maxratio=0

שימו לב כי ה clamav.dbpath ייתכן וישתנה משרת לשרת זאת התיקייה הסטנדרטית.
ע"מ לאתר התיקייה שלכם הרצינו את פקודה הבאה:
locate main.cvd
לאחר מכן תפעילו מחדש את שרת ה APACHE ע"י הרצת הפקודה הבאה:
במערכות Fedora או RedHat
קוד:

sbin/service httpd restart
ב FreeBSD
קוד:

/usr/local/etc/rc.d/httpd restart
ייתכן ובמקום httpd זה apache או apache2.

שלב ד) בדיקת ע"י קובץ PHP

העלו את הקובץ הבא לרשת:

קוד:


<?php
if(!extension_loaded('clamav')) {
        dl('clamav.' . PHP_SHLIB_SUFFIX);
}
$module = 'clamav';
$functions = get_extension_funcs($module);
echo "Functions available in the test extension:<br>\n";
foreach($functions as $func) {
    echo $func."<br>\n";
}
echo "<br>\n";
$function = 'confirm_' . $module . '_compiled';
if (extension_loaded($module)) {
        $str = $function($module);
} else {
        $str = "Module $module is not compiled into PHP";
}
echo "$str\n";
?>

וגלשו אליו במידה ותקבלו את העמוד הבא:

קוד:

Functions available in the test extension:
cl_info
cl_scanfile
cl_scanbuff
cl_setlimits
cl_scanfile_ex
cl_scanbuff_ex
cl_pretcode
clam_scan_buffer
clam_scan_file
clam_get_version


Fatal error: Call to undefined function confirm_clamav_compiled() in /var/www/clamav.php on line 14

סימן שהכול בסדר ד"א אפשר להתעלם מה ERROR

במידה קיבלתם עמוד אשר מודיע כי אין גישה ל clamav.so סימן ש PHP לא טוען את המודל

שלב ה) עכשיו נעבור לחלק המעניין באמת עמוד ה PHP אשר מעלה וסורק את הקובץ

קוד:


<?php
$upload_dir = '/var/www/uploads/';

if($_POST){
  $error = '';
  //print_r($_FILES);
  if($_FILES['file']['size'] == 0 || !is_file($_FILES['file']['tmp_name'])){
    $error .= 'Please select a file for upload!';
  } else {
    cl_setlimits(5, 1000, 200, 0, 10485760);
    if($malware = cl_scanfile($_FILES['file']['tmp_name'])) $error .= 'We have Malware: '.$malware.'<br>ClamAV version: '.clam_get_version();
  }
  if($error == ''){
    rename($_FILES['file']['tmp_name'], $upload_dir.$_FILES['file']['name']);
  }
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>File-Upload</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form method="post" action="upload.php" name="fileupload" enctype="multipart/form-data">
<table width="100%" border="0" cellspacing="0" cellpadding="2">
  <tr><td><b>File Upload</b></td></tr>
  <tr><td> </td></tr>
  <?php
  if(isset($error)){
    if($error != ''){
  ?>
  <tr><td><?php echo cl_info(); ?></tr>
  <tr><td><b>Error:</b> <?php echo $error; ?></td></tr>
  <?php
    } else {
  ?>
  <tr><td><b>File <?php echo $_FILES['file']['name']; ?> has successfully been uploaded to <?php echo $upload_dir; ?>!</b></td></tr>
  <?php
    }
  }
  ?>
  <tr><td>
    <table width="500" border="0" cellspacing="0" cellpadding="2">
      <tr>
        <td width="126">File:</td>
        <td width="366"><input type="file" name="file" size="30" value="" maxlength="255"></td>
      </tr>
      <tr>
        <td> </td>
        <td><input name="Upload" type="submit" value="Upload"> <input name="Cancel" type="reset" value="Cancel"></td>
      </tr>
    </table>
  </td></tr>
</table>
</form>

אז ככה הפרמטרים שאתם צריכים לשנות הינם:
$upload_dir מיקום הקבצים לאחר העלה לשרת שימו לב לתת לתיקייה הרשאות 777 ולהשאיר את ה / בסוף השורה, נכון בסקריפט הזה אני משתמש ב rename ולא ב move_uploaded_file אבל זה לא משנה הפונקציות מבצעות כמאט את אותה הפעולה.

אני גם משתמש ב cl_setlimits ע"מ למנוע התקפות DDOS לסקריפט ולבצע יותר מידי סריקות הפונקציה cl_setlimits מקבלת את הערכים הבאים:

קוד:

cl_setlimits($maxreclevel, $maxfiles, $maxratio, $archivememlim, $maxfilesize)
$maxreclevel: ערך מספרי , מספר מקסימום תת תיקיות / קבצים מקוובצים בתוך הקובץ המקורי שהוא יסרוק
$maxfiles: ערך מספרי , מקסימום הקבצים הוא יסרוק בתוך קובץ מקווץ
$maxratio: ערך מספרי, מקסימום אחוזי קיבוץ לסריקה 0 אומר מבטל את ההגבלה
$archivememlim: ערך בוליאני 0/1 מגביל את השימוש בזכרון בעת סריקת קבצי bzip2
$maxfilesize: ערך מספרי, מקבל את ערך הקבצים אשר לא יסרקו שימו לב כי הגודל הינו בבייטים - Bytes
במידה ולא הרצנו את ה cl_setlimits הוא ישתמש בהגדרות ה PHP.INI שלפי ההגדרות שלנו לא מגבילות בכלום הכול 0

ע"מ לבדוק האם הכול תקין אתם מוזמנים להוריד את קבצי ה VIRUS לנסיון של Eicar מ http://www.eicar.org/anti_virus_test_file.htm

פה אנו נסיים את החלק אשר מתייחס למודל ה PHP ונסקור בקצרה את תהליך התקנת ה ClamAV והגדרתו

נכון לכתיבת מדריך זה גירסה הגירסה האחרונה הינה 0.90 לפני התקנת התוכנה גלשו לאתר החברה והורידו את הגירסה העדכנית ביותר Http://www.clamav.net

פקודות הורדה והתקנה:
קוד:


wget http://freshmeat.net/redir/clamav/29355/url_tgz/clamav-0.90.tar.gz

tar -zxf clamav-*.tar.gz
cd clamav-*

./configure --prefix --enable-experimental

ייתכן ושורה זאת תחזיר ERROR במידה וזה קורה נסו את אחת משתי השורות הבאות:

./configure --enable-experimental

./configure

לאחר שהוא יסיים הריצו את השורה הבאה:

make && make install

בשלב זה אליכם יהיה להגדיר את ClamAV ואת FreshClam אתם מוזמנים להשתמש בקבצי ההגדרה שלי

קוד:

http://www.dr-host.co.il/conf/clamd.conf
http://www.dr-host.co.il/conf/freshclam.conf

במידה והינכם משתמשים בקבצי ההגדרה שלי וודאו כי קיים יוזר בשם clamav
קיימת תיקייה בשם clamav בתוך

קוד:

/var/run & /var/log
ושהם שייכות ליוזר clamav שיוך ניתן לתת ע"י הפקודה הבאה:

קוד:


chown clamav:clamav -R /var/run/clamav
chown clamav:clamav -R /var/log/clamav

כמו-כן מסד הקבצים אצלי נמצא ב:
קוד:

/var/lib/clamav

שימו לב את את ההרצה הראשונה של clamd צריך לבצע כ ROOT
כמו-כן תדאגו שמסד הנתונים של ה ClamAv הינו מעודכן ע"י הכנסת ה CronJob ליוזר ROOT:

קוד:

crontab -e
תלחצו על i ע"מ להיכנס למצב עריכה
ותדביקו את השורה הבאה בסוף הקובץ

30 1 * * * /usr/local/bin/freshclam --quiet

המדריך נכתב ע"י וניתן להפיצו ברשת בצורה חופשית תוך מתן קרדיט לי.

opsite 14-02-07 17:38

חח יפה ... כל הכבוד אחי אחלה השקעה ..!!

תודה רבה אחי

drowkid 14-02-07 17:54

פשש
 
אהבתי...
אחלה מדריך אחלה השקעה...
מומלץ!..

Udi 14-02-07 18:39

תודה רבה וכל הכבוד, אמרתי לך כבר בSC =]

daNN 22-10-11 15:13

ממש מושקע כל הכבוד

<script>alert("Xss Injection :/");</script>

Acid-Burn 22-10-11 15:26

תודה אחלה מדריך

גורילה 22-10-11 16:45

ציטוט:

נכתב במקור על ידי daNN (פרסם 822780)
ממש מושקע כל הכבוד

נחמד!
מנהלי הפורום, לטיפולכם..

satan 22-10-11 17:03

ציטוט:

נכתב במקור על ידי גורילה (פרסם 822790)
נחמד!
מנהלי הפורום, לטיפולכם..


לא נראה לי שלמישהו אכפת... הפורום הזה די מת


כל הזמנים הם GMT +2. הזמן כעת הוא 11:24.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ