14-02-07, 16:40 | # 1 |
חבר פורום
|
[מדריך] 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 שלב ב) פתחו את קובץ ה 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/ אצלי הקובץ נמצא ב: קוד:
/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 ע"מ לאתר התיקייה שלכם הרצינו את פקודה הבאה: locate main.cvd לאחר מכן תפעילו מחדש את שרת ה APACHE ע"י הרצת הפקודה הבאה: במערכות Fedora או RedHat קוד:
sbin/service httpd restart קוד:
/usr/local/etc/rc.d/httpd restart שלב ד) בדיקת ע"י קובץ 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 במידה קיבלתם עמוד אשר מודיע כי אין גישה ל 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) $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 קוד:
http://www.dr-host.co.il/conf/clamd.conf http://www.dr-host.co.il/conf/freshclam.conf קיימת תיקייה בשם clamav בתוך קוד:
/var/run & /var/log קוד:
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 גיגה לקובץ |
14-02-07, 17:38 | # 2 |
משתמש תחת חוזה ניסיון
|
חח יפה ... כל הכבוד אחי אחלה השקעה ..!!
תודה רבה אחי
__________________
צחי אוחיון , מתכנת אתרים , בונה אתרים , קידוד אתרים . Php - Html - Css - Js פרטים נוספים : 052-5-819366 -> eMail - zahiohayon@gmail.com העלאת קבצים|מזרחית|סינגלים |
14-02-07, 17:54 | # 3 |
חבר בקהילה
|
פשש
אהבתי...
אחלה מדריך אחלה השקעה... מומלץ!..
__________________
|
14-02-07, 18:39 | # 4 |
חבר על
|
תודה רבה וכל הכבוד, אמרתי לך כבר בSC =]
__________________
Udi Mosayev
Web Developer |
22-10-11, 15:13 | # 5 |
חבר בקהילה
|
ממש מושקע כל הכבוד
<script>alert("Xss Injection :/");</script> Last edited by daNN; 22-10-11 at 15:31.. |
22-10-11, 15:26 | # 6 |
עסק רשום [?]
|
תודה אחלה מדריך
__________________
אחסון אתרים |
22-10-11, 17:03 | # 8 |
חבר וותיק
|
לא נראה לי שלמישהו אכפת... הפורום הזה די מת
__________________
פנוי לעבודה כמתכנת WEB - למידע נוסף: ליאור אמסלם. בניית אתרים באינטרנט - בלוג על בניית אתרים באינטרנט עם טיפים, מאמרים, מדריכי תכנות ועוד. משחקים אתר משחקים |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
Tags |
אבטחה, מדריך למתקדמים, מדריך php |
כלים לאשכול | |
תצורת הצגה | |
|
|