וירוס ללינוקס?

יצא לי לקרוא לפני מס' ימים את כתבתו של ניב ליליאן על סוס טרויאני שנמצא בתוכנת שרת IRC (בשם UnrealIRCd) ותהייתו האמנם ללינוקס אין וירוסים.

נתחיל בעובדה פשוטה אחת: האם אפשר לכתוב וירוס שירוץ על לינוקס? התשובה היא חד משמעית: כן. תמיד אפשר לכתוב סקריפט שיעשה נזקים גדולים, שידע לטעון דברים אחרים (אם יש תקשורת החוצה) ואם הסקריפט ינצל פרצות קיימות ידועות שלא נסגרו, יהיה אפשר עם הסקריפט לתת למשתמש רגיל הרשאות root ומכאן והלאה הנזק שניתן לגרום יהיה ממשי ומבעית. אפשר יהיה לגרום לוירוס לרוץ כל פעם שמשתמש מתחבר לשרת ב-ssh לדוגמא ע"י הוספת שורה אחת ב-bashrc / bash_profile (תלוי בנסיבות), אפשר יהיה לגרום לסקריפט להשתמש להשתמש במפתחות שנמצאות בתיקית ssh. כדי לחדור למחשבים אחרים ו"להדביק" אותם.

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

  • תוכניות שנכתבות ב-bash/tcsh או ב-perl או python וכו' כשהן מורדות דרך דפדפן אינן מסוגלות לרוץ לאחר ההורדה. בשביל שקובץ יוכל לרוץ, חייב להיות לאותו קובץ ביט דלוק בהרשאות שלו ואות ביט נקרא Executable (או בקיצור: x). בלי הביט הזה, אם ננסה לפתוח אותו דרך מנהלי הקבצים של KDE או GNOME, יפתח עורך טקסטים עם תוכן הקובץ. הוא פשוט לא ירוץ, ובשביל להריץ אותו יש צורך בהרצאה ידנית: או להפעיל את הביט של executable לגבי הקובץ ואז להפעיל, או להשתמש ב-sh (או בפקודה שצריך, בהתאם לשפה שבה נכתבה התוכנה, כמו perl או python או php וכו'), כלומר אין אפשרות שאדם שלא מכיר לינוקס יוריד סקריפט, ילחץ עליו והסקריפט ירוץ אחרי הקלקה.
  • קיימים קבצי "חבילות" בינאריות כמו RPM או DEB להפצות לינוקס שונות, אולם גם כאן ישנם אמצעי מניעה ואזהרה. רוב המשתמשים מתקינים תוכנות אך ורק דרך מאגרים רשמיים (repositories) וכל מאגר חתום בחתימה מיוחדת שאותה יש לייבא לפני שימוש במאגר חיצוני. אמצעי מניעה נוסף הוא הצורך בסיסמת root על מנת להתקין קבצים בינאריים אלו. אין סיסמא, אין התקנה.
  • המאגרים שהזכרתי בסעיף הקודם מנוהלים ע"י אנשים אחראים ובמקרים רבים אותם מנהלים הם הם אלו שבונים את החבילות הבינאריות ולא כל טלאי קוד עלום מוכנס כך סתם לתוך החבילות הבינאריות, כך שהסיכוי לכך שחבילה בינארית תצא עם קוד זדוני הוא די קטן.
  • מודעות לאבטחה: בניגוד ליצרניות מערכות הפעלה אחרות שלוקחות את עניין אבטחה המידע כאקט שיווקי ורק לאחר מכן יישומי, יצרני ההפצות לוקחים את עניין האבטחה מאוד ברצינות ומיישמים זאת בהפצות השונות של לינוקס. התקנת CentOS או Fedora לדוגמא ישאלו לאחר סיום ההתקנה איזה שרותים הינך רוצה להריץ ועל איזה יציאת רשת הינך "סומך", כדי שהמערכת תכתוב אוטומטית חוקים לחסום את השאר. בניגוד למיקרוסופט שמציגים חלון השואל אם לפתוח פורט לאפליקציה (והמשתמשים, גם כשאין להם מושג מה החלון אומר, לוחצים "yes"), בלינוקס אתה צריך לפתוח פורט ידנית בחומת האש לאפליקציה אם היא צריכה תקשורת מבחוץ פנימה, ובמקרים מסויימים גם צריך לשנות את חומת האש לשם התקשרות מבפנים החוצה.

שום הפצת לינוקס אינה חסינה מוירוסים וטריקים שונים, אולם המודעות לעניין אבטחה ועדכוני אבטחה היא הרבה יותר גבוהה ממה שקורה בעולם של מיקרוסופט. הדוגמא הכי פשוטה להתנהגות גרועה היא דווקא מהצד של מיקרוסופט: אנשים רבים מפחדים להתקין עדכוני אבטחה כשהמערכת שלהם אינה חוקית והם חוששים שמיקרוסופט יכניסו להם "בסיבוב" איזה "עדכון אבטחה" שישבית להם את מערכת ההפעלה, ולכן הם מתעלמים מכל אזהרת אבטחה. התוצאה? מאות אלפי מחשבים בעולם הם לא יותר ממחשבים "זומבי" המשמשים כ"עבדים" לרשתות בוטנט שונות הזורעות הרס בכל מיני כיוונים (התקפות DDOS, הפצת דואר זבל, וירוסים ושאר מרעין בישין). ב-לינוקס אף אחד לא יחסום אותך עם טריקים כאלו וכל מה שלוקח להתקין עדכוני אבטחה הם 2-3 קליקים. כל זה מוביל לכך שבלינוקס מאוד נדיר למצוא וירוס כלשהו וחברות המייצרות אנטי וירוסים מייצרות תוכנה גם עבור לינוקס, אך השימוש שלה הוא בד"כ כדי להתממשק לשרת הדואר הארגוני ולסרוק מיילים יוצאים ונכנסים.

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

כמה מילים על החזרות מחשבים עם לינוקס

יצא לי לקרוא ב-YNET על גל החזרות של ניידים מבוססי לינוקס (מה שאינטל קוראים NetBooks), על כך שפי 4 מחזירים מחשבים כאלו עם LINUX מאשר משתמשי Windows באותם מחשבים זעירים.

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

יצא לי בחג הזה להשתמש ב-EEE 901 שהבוס שלי השאיל לי לחג. אני החלטתי להשתמש בו עם מה שהוא הגיע ולא להוסיף/להחסיר תוכנות (אם המחשב היה שלי, הוא היה מייד מפורמט והייתי מתקין עליו פדורה 9 או 10 אלפא, אבל זה אני ואני צריך להחזיר מחשב כמו שקיבלתי אותו). מבחינת התוכנות והממשק שקיבלתי איתו, אני יכול לאמר שאני בהחלט מבין את הצרכנים.

במקרה של ASUS, הם בחרו ב-Xandros שיבנו להם הפצת לינוקס שתרוץ מהר על המחשב הקטן ובאמת המערכת עולה מהר, עד שאתה רוצה בתכל’ס להשתמש במערכת ואז מבינים מה באמת קורה: קיבלת GUI, אבל בתכל’ס השירותים עדיין לא אותחלו. תקבל הודעה אם הכנסת כרטיס SD אבל עד שה-File Manager עולה לוקח בין 30 שניות לדקה נוספת, שלא לדבר על ה-WIFI שגם לו לוקח כמה שניות “להתעורר” ולהבין שיש אפשרות להתחבר, עוד כמה שניות להציג את הרשתות ועוד כמה שניות להתחבר (אפילו אם הרשת WIFI נטולת הצפנה וסיסמא). את זה אני למדתי לאחר שפתחתי טרמינל והתחלתי לעקוב אחרי הדברים, אבל משתמש שלא מבין ב-Linux לא יבין מה קורה והוא ילחץ שוב ושוב עד שיפתחו לו איזה 6 מנהלי קבצים ואם הוא הפעיל סרט לדוגמא, יפעלו לו 3 נגני סרטים באיטיות מרגיזה ואז הוא אולי יבין שיש כמה נגנים שרצים וצריך לסגור אותם.

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

  • תיעוד בוידאו: אם ב-Windows אפשר לעשות פעולה מסויימת ע”י לחיצה של כך וכך, איך עושים את זה באותה הפצה שמותקנת? היצרן צריך להשקיע בכמה עשרות קליפים פשוטים כדי להראות למשתמש מה עושים ואיך, כאשר מצלמים איך עושים ב-Windows ואיך עושים זאת ספציפית על אותו מחשב נייד.
  • ממשק: הממשק של Xandros או Linpus (במקרה של ACER) הוא נחמד לפעולות בסיסיות בלבד, אבל הוא מאוד גרוע שמנסים מעט להתרחב. רוצה להתקין תוכנה? ב-Xandros נותנים לך את Synaptic שמבהיל כל משתמש חדש שלא מבין בלינוקס ולא מנסה ללמוד לינוקס! צריך משהו הרבה יותר פשוט שיכול לתת רשימת תוכנות, וכפתור אחד של התקנה. עניין ה-Dependencies לא מעניין את המשתמש הפשוט וזה רק מבהיל אותו.
  • לוותר על ממשקים קנייניים!: זה נחמד שכותבים ממשק עם TCL/TK שבסה”כ מראה אייקונים גדולים ומפעיל תוכנות, אבל הממשק הזה מוגבל לחלוטין ולא מאפשר דברים רבים שהמשתמש כן מעוניין בהם! אם המשתמש מעוניין להגדיר רשת ידנית, או המשתמש מעוניין להוסיף חיבור מדפסת, או לכוון את השעה עם שרת NTP, או לשנות סיסמאות ועוד ועוד, הדברים לא נתמכים בממשק שהיצרנים מפיצים. אולי במקום זה, לתת פשוט KDE עם אייקונים וקצת לקצץ ב-KControl? למשתמשים המתוחכמים יהיה אפשר לתת אפשרות ללחוץ Advanced ואז לקבל את ה-KDE המלא. איפה זה עוזר? הרבה יותר קל לחפש עזרה בבעיה/שאלה לגבי KDE מאשר לחפש עזרה על LinPus.
  • עדכונים: בקטע הזה משום מה הרבה יצרנים נופלים, מהסיבה הפשוטה שה-Repository לא מעודכן, כמו ב-LinPus או Xandros, ככה לי אישית יצא לחרדתי למצוא כי Pidgin 2.0.2 עף חופשי אם אני מוסיף חשבון Jabber או rdesktop מחליט ליפול מול XP ברגע שאני מזיז את העכבר מול גרף דינמי. נסיון לעדכן ולמצוא אם יש עדכון הראה ש… אין. תרצה? תשנה את הגדרות ה-Repository שלך מול הפצה קרובה ואז תראה שברגע שתעשה Upgrade תחטוף סיוט של החיים כי ההודעות יראו שהעדכונים ימחקו לך חצי ממה שהיצרן התקין כבר עבורך ומה שיותקן לא תמיד יעבוד על המחשב הקטנטן.

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

לגביי, למדתי משהו מעניין על ה-EEE 901: אחלה סוללה (4 שעות של נסיעה באוטובוסים, ניגון סרטים מכרטיסי SD שונים עם mplayer ועדיין נשאר 30 אחוז מהסוללה!), חרא של מקלדת, חרא של “עכבר”, שקט בטירוף מבחינת איוורור, ועושה עבודה כמו שצריך… אם אתה מוכן להשקיע את העבודה הראשונית עליו.

חג שמח