מלחמת השרתים

מידי יום מאז ומתמיד, יש קבוצות שלמות שעושות Defacement לאתרים. לאלו שלא יודעים, המונח Defacement אומר שלוקחים את הדפים של האתר ומשנים להם את התוכן. זה יכול להיות שינוי אמיתי של המידע, וזה יכול להיות שינוי ווירטואלי, ע"י שינוי שרתי DNS, ניצול של מסדי הנתונים באתר וכו'. עכשיו בזמן הלחימה בעזה, כמות הניסיונות כלפי אתרים ישראלים עולה הרבה יותר מימים רגילים.

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

  1. הקשיחו את השרת שלכם – כלומר לתת אפשרויות מאוד מוגבלות ולא ידידותיות למשתמש בשרת, ולחסום כל דבר אפשרי בברירת מחדל, ולאפשר רק לדברים מאוד ספציפיים לרוץ ולעבוד, וגם זה עם מינימום של הרשאות כמה שרק אפשר.
  2. עדכנו את השרת שלכם בכל עדכוני האבטחה הכי אחרונים.
  3. וודאו שאין שום מידע שזולג החוצה מהשרת שאתם לא רוצים ומעוניינים שיזלוג. במידה ואתם רוצים שיהיו משתמשים שכן יוכלו לקבל מידע כזה, תחסמו את המידע לכל כתובת IP פרט לכתובות מאוד ספציפיות.
  4. סיימתם קורס בבנית אתרים, או גיליתם עורך נחמד שעושה עבורכם את העבודה ואתם רק כותבים תוכן, ובכן אם האתר שלכם הוא לא סטטי (כלומר דפי טקסט בלבד), אלא גם קוד תכנות, אתם רחוקים מאוד מלדעת איך לבנות אתרים, והגיע הזמן שתבינו את זה.
    מה שמביא אותנו לסעיף הבא:
  5. תתכנו בצורה בטוחה. ניתן בצורה מאוד פשוטה למנוע הרבה בעיות ע"י ווידוי מידע המגיע אלינו מהשתתמש או מהמערכת, והזנת המידע הזה בצורה שלא תסכן חיי שרת/דפדפן/אדם/מסד נתונים וכו'.
  6. תבדקו את האתר שלכם ותנסו לכתוב תסריטי בדיקה שלוקחים כל משתנה, כל גישה וכל מידע ותנסו לשבש את פעולת האתר, במידה ואתם מצליחים, תחזרו לקד ותתקנו מה ששברתם, עד אשר לא יהיה ניתן לשבור את האתר.
  7. אל תתנו גישה לכל האנשים לשרת, רק לאלו שבאמת חייבים, למשתמשים שרק משתמשים בשירותים של השרת, תנו את ה"דלת שירות" ולא את ה"דלת האחורית", כלומר גישה כדוגמת ssh צריכה להיות מותנת גם ל IP ולא רק פר משתמש וסיסמה/תעודה.
  8. הפסיקו להשתמש ב md5 בכלל. ניתן ב"קלות" לזייף אותם.

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

7 מחשבות על “מלחמת השרתים

  1. עירא

    הכל כל כך ברור לי מאליו שאני שוכח עד כמה זה חשוב להנחיל🙂

    הדבר היחידי שמשך לי את העין: קובץ הshadow עבר בשנים האחרונות מקריפט לMD5. כמה בלגן יהיה עכשיו להעביר את העולם למשהו חזק יותר? מההו ההאש הנכון לעבור אליו? אני רץ לגוגל לבדוק מה אומרים על זה אחרים…

  2. ik_5 מאת

    כרגע sha לא מכיל בעיות ידועות כלשהן, ולכן מומלץ לעבוד איתו במקום.
    הבעיה בקריפטוגרפיה היא, שמאוד קשה להגיע למצב שיש לך משהו טוב בידיים שאי אפשר לפרוץ/לשכפל וכו' בקלות מספקת.

  3. ארתיום

    הערה לגבי md5: החולשה שלו היא יכולת למצוא שני טקסטים בעלי md5 זהה. שזה כמובן חמור אבל:

    – עדיין לא ניתן, בהינתן חתימה ליצור קובץ אחר שמייצר את אותה החתימה.
    – עדיין דברים כמו hmac מבוססים על md5 בטוחים למתקפות כאלה – כי יש להם גם מפתח נוסף.

    במילים אחרות, צריך להכיר את החולשה של md5 אבל עדיין מוקדם לקבור אותו

  4. ik_5 מאת

    ארתיום, כבר קרוב ל4-5 שנים שיודעים שיש התנגשויות עם md5. אני חושב שהגיע הזמן לעזוב את השיטה הזו, ולעבור הלאה. אני לא אומר שכל תוכנה שכבר משתמשת בו צריכה להפסיק, אני מדבר על כל צורך חדש ב hash של מידע לא לעבוד עם md5 אלא עם שיטות אחרות כדוגמת sha.

  5. ארתיום

    היתרון הגדול ביותר של md5 שהמימוש שלו מאוד נפוץ בדוק וידוע.

    למשל, עבור CppCMS אני משתמש בו עבור:

    – יצירת session_id כפונקציה אקראית בטוחה.
    – יצירת חתימה דיגיטלית MD5-HMAC שהיא בהחלט בטוחה.
    – בדיקה של תוכן שמועבר תחת הצפנה.

    ד"א לגבי הקישור ששלחת… שמת לב איזה כוח חישוב נדרש כדי לבצע את ה"פריצה" הזו. כ־35 שנות ריצה של מחשב אופייני, או 3 ימים של 200(!) קונסולות playstation (ה־GPU שלהם ששווה לכ־40 מעבדים).

    כך שצריך משאבים מאוד גדולים ויקרים כדי להשתמש בהחולשה נוספת שהם הציגו וגם אז צריך תנאים מאוד מסוימים כדי לתקוף.

    שוב, md5 כפונקציית Hash כפישהי לא מתאימה, אבל תחת תנאים מסוימים (למשל הוספת "מלח") והכרה של החולשות שלה, היא בהחלט שימושית ובטוחה.

    אגב, לגבי קובץ shadow:‏

    1. רק root יכול לקרוא אותו
    2. ההתקפות של שבירת md5 אינן יעילות, בד"כ משתמשים מתקפות מילון — קריא להכניס סיסמה שסביר להניח שאדם היה מקליד. משל: אדם לא יכניס מפתח כמו: OGUzYjVlZjQzNjMzODl, הוא ישמתש במשהו כמו HaRRy!Ptr… שזה הרבה יותר קל לבדוק בהתקפת מילון.

    שוב, לא צריך לזרוק דברים כי נחשב שהם בטוחים או לא. לצריך לקחת בחשבון: סוג חולשה, מחיר הפריצה ותועלת מהפריצה.

  6. צפריר כהן

    md5 מהיר בהרבה מאחרים. גם sha1 מהיר הרבה יותר מאחרים. כרגע יש בעיות ידועות עם sha1 אולם הן אינן חמורות. ההמלצה כיום היא לא לבנות יותר מדי דברים חדשים של sha1 ובטח לא על md5.

    הפסימיים שבינינו שרוצים למצוא תימוכין לדעות הללו יוכלו להציץ ב:
    http://www.linuxworld.com/cgi-bin/mailto/x_linux.cgi?pagetosend=/export/home/httpd/linuxworld/news/2007/111207-hash.html

    $ for sum in sum md5sum sha1sum shasum sha224sum sha256sum sha384sum sha512sum; do echo -n "$sum: "; /usr/bin/time -f "%E" $sum /home/tzafrir/VM/live-1.2.0.iso >/dev/null; done
    sum: 0:00.69
    md5sum: 0:00.50
    sha1sum: 0:00.77
    shasum: 0:00.83
    sha224sum: 0:01.47
    sha256sum: 0:01.48
    sha384sum: 0:01.03
    sha512sum: 0:01.02

    רגע, מה רציתי להגיד?

  7. פינגבק: הבלוג של ארתיום

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s