נקודות למחשבה לסטארטאפיסט

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

רוב הסטארט-אפים צריכים להקים תשתית כדי למכור את המוצר/שרותים. חלק יקימו תשתית בארץ (אם זה מוצר ללקוחות ישראלים) וחלק יקימו בארה"ב (לדעתי שגיאה קלאסית שתיכף אסביר מדוע). מכיוון שרוב הסטארט-אפים צריכים לעבור מסלול זה או אחר להקים תשתית של שרתים, אפליקציות וכו', החלטתי לתת מספר טיפים מתוך נסיון עשיר (15 שנה, המונה דופק) בנושא. הפוסט עצמו הוא פוסט גנרי. זה נחמד אם היית לוקח מאיתנו שרת VPS (כזה, או כזה או כזה), אבל זו לא המטרה של הפוסט ואפשר לעשות את הדברים שאכתוב עליהם אצל כל ספק רציני (רציני – לא אחד שמוכר וירטואליזציה של Virtuozzo כ"מחשוב ענן"!).

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

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

יחד עם זאת, צריכים לדעת להסתכל למציאות בעיניים ולהבין שזה שאתה מקים את הסטארט-אפ עם המוצר הכי Cool/שימושי שיהיה – לא יקבל בחודש הראשון כמה מיליוני Hits (או כמות כזו של יוניקים), אלא סביר יותר שיהיו בהתחלה כמה עשרות, זה יגדל למאות ואם תעשו עבודה טובה – זה יגדל לאלפים, עשרות ומאות אלפים ועוד. זו השאיפה כמובן.

אז מכיוון שבהתחלה (הווה אומר: חודשים ראשונים) מי שמשלם על התשתית זה אתה ו/או שותף שלך ואין לך דוד/מכר מיליונר עם סיגר עבה בפה / קרנות כלשהן שמוכנות לשפוך עליך כספים רבים שתשיג אנשי מכירות, פרסום מאסיבי ועוד, תצטרך להתחיל במשהו קטן ורק לאחר שתהיה המאסה תוכל לתכנן מחדש ממש בגדול. במילים אחרות: את התכנון של 3 שרתי אפאצ'י בפרונט, 3 שרתי אפליקציה, 2 שרתי SQL, ו-Load Balancer עם ראוטר וחומת אש עצבנית – כדאי להשאיר לזמן שתהיה לך מאסה גדולה וקבועה.

לכן, כשמתחילים צריך לקחת שרת וירטואלי (עדיין לא יעודי, המחיר של יעודי יקפיץ בעוד כמה מאות דולרים לחודש) טוב עם ליבה אחת (מומלץ 2 אם אפשרי מבחינת תקציב) וזכרון של לפחות 1-2 ג'יגה (אם מדובר בשרת Linux) או 2-3 ג'יגה (אם מדובר בשרת Windows. מה לעשות, Windows שותה זכרון עם צינור). מבחינת רוחב פס, ודא כי הספק נותן לך לפחות 5-10 מגהביט סימטרי (לא "מתפרץ", שזה בעצם טריק שיווקי למכור שליש מוצר במחיר של מוצר) ומתחייב על כך בחוזה. מבחינת דיסק, כדאי שיהיו כמה עשרות ג'יגהבייט בתור התחלה. ודא שיש לך אפשרות לקבל קונסולה אם במקרה נעלת את עצמך בטעות (כמו במקרה של טעות בהגדרות SSH או חוק שגוי בחומת האש הפנימית) מבלי להתחנן לתמיכה שיפתחו לך.

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

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

  • Cache חובה: לא חשוב כמה האתרים שלכם דינמי, חלקים רבים בתוכו הם סטטיים – תמונות, סקריפטים, תכנים, דף פתיחה ועוד, וכל החלקים האלו אפשר ליצור להם קבצים סטטיים שיוגשו לגולש ואפליקציית Cache תייצר אותן תוך מעקב מה בתוקף ומה לא. אם אתם משתמשים באפליקציות CMS, אז ברוב המקרים זה רק עניין של התקנת תוסף פשוט שיתן לכם את זה. שימוש חכם ב-Cache יכול לחסוך את רוב העבודה שהשרת צריך לעשות כדי לתת תכנים מותאמים לגולש.
  • אופטימיזציית SQL – זה משהו אחד שיש לך 2 שרתי SQL מאסיביים שרצים עם סינכרון/רפליקציות עם תקציב שנתי רצינית, וזה משהו אחר שאתה סטארט אפ ויש לך תקציב ששווה לתקציב הקופה-הקטנה של גוגל. שרת ה-SQL שלך צריך לעבוד בצורה אופטימלית וחזקה. אם אתה משתמש לדוגמא ב-MySQL, אז יש כאן לדוגמא מדריך איך לעשות זאת, וכל שרת SQL מכובד כולל אתר שלם איך לעשות אופטימיזציות, החל בבחירת מנוע נכון (InnoDB, MyISAM וכו'), הגדרת כמות חיבורים בהתאם לכמות הזכרון והצורך, ועד ל-Queries בלתי אופטימליים (דבר שגורם "מריבות" בין מפתחים שונים, גם את זה ראיתי).
  • שרת WEB טוב: הנה עובדה – שרת Apache על VPS כמו שפירטתי מקודם שמוגדר טוב (עם כל ה-MPM, מודולים וכו') יכול לשרת כמה אלפי אנשים סימולטנית מבלי לחנוק את הליבה של ה-VPS ומבלי לגרום ל-Load היסטרי. גם שרת NGINX יכול לבצע את העבודה הזו מבלי לחנוק משאבים, כל מה שצריך זה תכנון ובדיקה (לא חסרים כלים להעמיס שרתים). אם פעם אחת יושבים ומגדירים את זה בצורה טובה, אז יהיו לכם לילות ללא יקיצה בגלל שרת קורס. חשוב להגדיר בשרת Cache לדברים שלא הולכים להשתנות כל דקה (לדוגמא: קבצי Header ו-Footer).
  • אבטחה: יודעים מי ינסה לבדוק כמה האתר שלכם מאובטח? המתחרים שלכם, ובמקרים רבים המתחרים שלכם מכאן בארץ. חושבים שלא ינסו לבדוק SQL Injection וכל חור אפשרי? הם בהחלט ינסו, כי זו השיטה הכי טובה לגלות סודות מסחריים שלכם (במיוחד דפים וקבצים נסתרים שמיועדים ללקוחות Beta סגור). לכן כדאי לבדוק את כל הרכיבים כולל אלו שלא תהיה להם גישה מבחוץ. נסו לסרוק את השרת שלכם עם nmap, או SNORT (לא, הוא עוד לא מת) וכלים אחרים, חפשו כלים אחרים, בדקו XSS, נסו לבצע SQL Injection ותקנו את כל החורים.
  • עבדו עם גירסאות יציבות של מערכות הפעלה. ב-Windows זה Non issue, משתמשים ב-2008 R2, בלינוקס לעומת זאת מומלץ שלא להשתמש בגרסאות שמשתנות כל הזמן כמו Ubuntu הרגיל (קח את Ubuntu LTS) או Fedora (קחו CentOS 6 או Scientific Linux 6.1) והקפידו להריץ עדכון לפחות אחת לשבוע.
  • צרו גיבוי מרוחק – כל ספק יכול להבטיח שהגיבוי שלו סוף הדרך, שזה נחמד, אבל עדיף שיהיה לכם לפחות אחת לחודש גיבוי של האתר וה-DB אצלכם בידיים או בשרת מרוחק אחר (זה לא מסובך: mysqldump לבסיס הנתונים, rsync לשאר, להריץ הכל ב-cron ונגמר העניין).

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

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

רק הצלחה!

בעקבות גניבות כרטיסי אשראי – שאלות ותשובות

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

במאמר זה ננסה לענות על שאלות שעולות אצל בעלי אתרים.

האם המידע שמסרו בעלי חברת דובל נכון והפורץ חדר מתוך אתר בלתי מוגן אל אתרים מוגנים?

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

יש לי אתר שאני מוכר בו מוצרים, האם גם האתר שלי חשוף לפריצות?

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

באתר שלי אני סולק כרטיסי אשראי ישראליים. האם יש המלצות כלשהן?

ישנן מספר המלצות עיקריות:

  • להעביר את האתר בדחיפות סריקה של איש אבטחת מידע לגבי הצפנת הנתונים, מחיקת נתונים שאין צורך בהם ושאסור שישמרו אצלך (לדוגמא: 3 הספרות בגב כרטיסי האשראי, מה שנקרא CVV או CVV2) ובדיקת עדכונים לגבי התוכנה שאתה משתמש בה לניהול האתר/חנות.
  • מעבר לאחסון לשרת וירטואלי (שרת VPS) – ראה הסבר בהמשך המאמר מדוע.
  • חתימת חוזה מתמשך עם בונה האתרים שלך (או בונה אחר) להטמעת עדכוני תוכנה ואבטחה באחסון שלך לפחות אחת לחודש.
  • מעבר לסליקה דרך אתר חיצוני (כמו טרנזילה ואחרים) שלהם יש מומחיות בסליקה, הצפנה ועוד.

אם אני מוכר מוצרים אבל אני לוקח פרטי אשראי בטלפון, אני צריך לדאוג?

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

למה אני צריך שרת וירטואלי? מה רע במה שיש לי היום? הספק אומר שהאחסון מאובטח

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

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

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

מה אם אני מעוניין לשמור פרטי אשראי למקרה והלקוח ירצה לרכוש פריטים/מוצרים נוספים?

לשם כך אני ממליץ לך להיוועץ במחלקת האבטחה של חברת האשראי איתה אתה סולק כרטיסים.

סולק צד שלישי יקר לי/לא מתאים לי ואני לא רוצה להיכנס להוצאות נוספות. אי אפשר להוזיל עלויות?

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

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

ספק האחסון שלי אומר שהשרתים שלהם מאובטחים והכל אצלם מאובטח. זה מספיק, לא?

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

אם יש לכם עוד שאלות, אתם מוזמנים לכתוב אותם כאן בטוקבקים  ונשמח לענות לכם.