הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 14-02-07, 16:40   # 1
Dr-Host
חבר פורום
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: באר-שבע
הודעות: 91
שלח הודעה באמצעות ICO אל Dr-Host

Dr-Host לא מחובר  

[מדריך] 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
המדריך נכתב ע"י וניתן להפיצו ברשת בצורה חופשית תוך מתן קרדיט לי.
__________________
בברכה,
דוד סוקוליק
Dr-Host.co.il



Xtrashare.net - שירות העלת קבצים, עד 3 גיגה לקובץ
 
 

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

Tags
אבטחה, מדריך למתקדמים, מדריך php

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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