הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות > תכנות - מדריכים, code snippets

   
|!|

סגור את ההודעה
 
כלים לאשכול תצורת הצגה
ישן 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 גיגה לקובץ
 
ישן 14-02-07, 17:38   # 2
opsite
משתמש תחת חוזה ניסיון
 
מיני פרופיל
תאריך הצטרפות: Jun 2006
גיל: 34
הודעות: 1,854
שלח הודעה באמצעות ICO אל opsite

opsite לא מחובר  

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

תודה רבה אחי
__________________
צחי אוחיון , מתכנת אתרים , בונה אתרים , קידוד אתרים .
Php - Html - Css - Js
פרטים נוספים : 052-5-819366 -> eMail - zahiohayon@gmail.com
העלאת קבצים|מזרחית|סינגלים
 
ישן 14-02-07, 17:54   # 3
drowkid
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
מיקום: מרכז - איזור כפ"ס
הודעות: 138

drowkid לא מחובר  

פשש

אהבתי...
אחלה מדריך אחלה השקעה...
מומלץ!..
__________________
 
ישן 14-02-07, 18:39   # 4
Udi
חבר על
 
Udi's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
מיקום: במרכז
גיל: 35
הודעות: 903
Send a message via Skype™ to Udi

Udi לא מחובר  

תודה רבה וכל הכבוד, אמרתי לך כבר בSC =]
__________________
Udi Mosayev
Web Developer
 
ישן 22-10-11, 15:13   # 5
daNN
חבר בקהילה
 
daNN's Avatar
 
מיני פרופיל
תאריך הצטרפות: Jan 2011
גיל: 35
הודעות: 178

daNN לא מחובר  

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

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

Last edited by daNN; 22-10-11 at 15:31..
 
ישן 22-10-11, 15:26   # 6
Acid-Burn
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 39
הודעות: 1,139

Acid-Burn לא מחובר  

תודה אחלה מדריך
__________________
אחסון אתרים
 
ישן 22-10-11, 16:45   # 7
גורילה
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Apr 2009
הודעות: 581

גורילה לא מחובר  

ציטוט:
נכתב במקור על ידי daNN צפה בהודעה
ממש מושקע כל הכבוד
נחמד!
מנהלי הפורום, לטיפולכם..
__________________
בניית אתרים

Last edited by גורילה; 22-10-11 at 16:48..
 
ישן 22-10-11, 17:03   # 8
satan
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,582

satan לא מחובר  

ציטוט:
נכתב במקור על ידי גורילה צפה בהודעה
נחמד!
מנהלי הפורום, לטיפולכם..

לא נראה לי שלמישהו אכפת... הפורום הזה די מת
__________________
פנוי לעבודה כמתכנת WEB - למידע נוסף: ליאור אמסלם.
בניית אתרים באינטרנט - בלוג על בניית אתרים באינטרנט עם טיפים, מאמרים, מדריכי תכנות ועוד.
משחקים אתר משחקים
 
סגור את ההודעה

חברים פעילים הצופים באשכול זה: 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. הזמן כעת הוא 00:10.

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