בבדיקת לוגים על שרת אובונטו קטן, סוכן ה-AI של OpenClaw מצא 1,676 ניסיונות כניסה כושלים עם סיסמה ב-24 שעות, רובם למשתמש root, ועוד ארבע כניסות מוצלחות עם סיסמה למשתמש ubuntu מכתובת אחת. את זה מתאר פרבז מוחמד מ-Techlatest במדריך שפרסם במדיום, שעוסק בהפיכת OpenClaw לעוזר לניהול שרת.
בתיאור של אותה בדיקה, הממשק של OpenClaw מראה שהסוכן רץ במצב Default (Full Access). ההגנה היחידה שהופעלה הייתה משפט בפרומפט שביקש ממנו לא לשנות כלום.
המחבר עצמו כותב שמשפט כזה לא אמור לשמש גבול אבטחה, וממליץ על מדיניות הרצה שמרנית יותר בשרת אמיתי. איך עושים את זה, המדריך לא מראה. הכתבה הזאת עוברת על כל השלבים שלו, מתקנת שתי תקלות בדרך, ומוסיפה בסוף את החלק שחסר, מתוך התיעוד הרשמי של OpenClaw.
מה בונים כאן
OpenClaw הוא סוכן AI בקוד פתוח שרץ על המחשב שלכם ומפעיל כלים אמיתיים, כולל פקודות בטרמינל. כתבנו כאן בעבר על הקשר שלו ל-OpenAI. הרעיון במדריך פשוט: במקום להתחבר בכל פעם ב-SSH ולהריץ df, free ו-journalctl, מבקשים מהסוכן לבדוק את השרת ולהסביר מה מצא.
הסוכן משתמש באותם כלי לינוקס שהייתם מריצים בעצמכם. הוא מריץ את הפקודות, אוסף את הפלט, מקשר בין הממצאים ומסביר אותם. זה אותו עיקרון של סוכן שרץ על המחשב האישי, רק על שרת שפתוח לאינטרנט.
השרת במדריך קטן בכוונה: אובונטו 24.04, שני מעבדים וירטואליים ו-3.8GB זיכרון לפי המחבר. המודל עצמו לא רץ על השרת. הוא מגיע מספק חיצוני דרך API, והשרת מריץ רק את OpenClaw ואת הכלים שלו.
שלב 1: להתקין את OpenClaw
המחבר התקין קודם Node.js 24 ידנית מהמאגר של NodeSource. לפי תיעוד ההתקנה הרשמי, הצעד הזה לא הכרחי. OpenClaw דורש Node 24.16 ומעלה או 26.1 ומעלה, וסקריפט ההתקנה מתקין Node 24 בלינוקס בעצמו אם הוא חסר.
curl -fsSL https://openclaw.ai/install.sh | bash
אצל המחבר, ההתקנה זיהתה שאין הרשאת כתיבה לתיקיית ה-npm הגלובלית, והגדירה לבד תיקייה מקומית למשתמש, בלי sudo. היא גם עדכנה את .bashrc, כך שבטרמינל חדש הפקודה openclaw זמינה. כדי להשתמש בה באותו טרמינל:
source ~/.bashrc
מיד אחרי ההתקנה נפתח אשף הגדרה, והמסך הראשון שלו הוא אזהרה: הסוכן יקבל גישה אמיתית למכונה. זה המסך היחיד באשף שכדאי לעצור עליו. בהמשך האשף בוחרים ספק מודל. המחבר חיבר מפתח API של OpenAI, והאשף בדק שהמודל עונה לפני שהמשיך.
שלב 2: להפוך את ה-Gateway לשירות קבוע
ה-Gateway הוא התהליך שמחזיק את הסוכן בחיים. בזמן האשף הוא רץ בחזית, כלומר ברגע שחיבור ה-SSH נסגר, הוא נסגר איתו. כדי שימשיך לרוץ, מתקינים אותו כשירות:
openclaw gateway install
openclaw gateway status
openclaw health
לפי התיעוד, הפקודה הראשונה מתקינה ומפעילה את השירות, ובלינוקס זה שירות משתמש של systemd. השנייה מראה שהשירות פעיל ועל איזו כתובת הוא מאזין. השלישית בודקת שה-Gateway עונה.
הפרט החשוב בפלט הוא הכתובת: 127.0.0.1, פורט 18789. ה-Gateway מאזין כברירת מחדל רק לתוך השרת עצמו, ולא לרשת הציבורית. זו ברירת מחדל טובה, וכדאי להשאיר אותה ככה.
שלב 3: להגיע לממשק דרך מנהרת SSH
מכיוון שה-Gateway לא פתוח לאינטרנט, מגיעים אליו דרך מנהרת SSH מהמחשב שלכם:
ssh -N -L 18789:127.0.0.1:18789 ubuntu@YOUR_SERVER_IP
כל עוד המנהרה פתוחה, הממשק זמין בדפדפן בכתובת http://localhost:18789/.
כאן יש תקלה במדריך המקורי. פקודת המנהרה שם מעבירה את פורט 18789, אבל הכתובת שנפתחת בדפדפן היא localhost:18889. ככה זה לא יעבוד. אם רוצים פורט מקומי אחר, משנים את המספר הראשון בפקודה, והשני נשאר 18789:
ssh -N -L 18889:127.0.0.1:18789 ubuntu@YOUR_SERVER_IP
הממשק יבקש טוקן. לפי תיעוד הלוח, מריצים על השרת, בטרמינל אינטראקטיבי:
openclaw gateway auth-token --show
התיעוד מציע גם דרך שהמדריך לא מזכיר: openclaw dashboard מנפיק קישור חד פעמי לחיבור, בלי לחשוף את הטוקן הקבוע. בכל מקרה, הטוקן לא נכנס לצילומי מסך, לפוסטים או לצ'אט.
שלב 4: בדיקת בריאות ראשונה
בממשק הצ'אט של OpenClaw שולחים בקשה שמגבילה את הסוכן לפקודות קריאה בלבד. הניסוח שלנו:
Act as my Linux server assistant. Check server health using read-only commands only:
CPU load, memory, disk usage, uptime, OS version and failed systemd services.
Do not install, change, restart, stop or delete anything.
List every command you run, then summarize the results.
לפי המדריך, אלה הפקודות שהסוכן הריץ:
uptime
top -b -n 1 | head -n 5
free -h
df -hT -x tmpfs -x devtmpfs
cat /etc/os-release
systemctl --failed --no-pager --plain
המחבר מדגיש נקודה נכונה: לא לשפוט את הבדיקה לפי הסיכום. "בדקתי את השרת" הוא משפט שמודל יכול לכתוב גם בלי לבדוק. מה שמוכיח שהבדיקה קרתה הוא רשימת הפקודות שרצו בפועל והפלט שחזר מהן, ושניהם מופיעים בממשק.
המדריך עצמו מספק דוגמה למה זה חשוב, גם אם לא בכוונה. בבדיקה הידנית שהמחבר עשה לפני ההתקנה, השרת דיווח על 3.8GB זיכרון. בדוח של הסוכן מופיעים 7.8GiB. אולי השרת הוחלף בין השלבים, והמדריך לא מסביר. זה בדיוק סוג הפער שנתפס רק כשמסתכלים על הפלט ולא על הסיכום.
שלב 5: קריאת לוגים, ומה שהסוכן מצא
הבדיקה השנייה יורדת לרמת הלוגים. הניסוח שלנו:
Review the system logs from the last 24 hours using read-only commands.
Look for errors and warnings, failed services, SSH or authentication issues,
and disk or filesystem problems. Change nothing.
Summarize what matters and what I should look into.
בין הפקודות שהסוכן הריץ, לפי המדריך:
journalctl --since "24 hours ago" -p warning --no-pager
journalctl -k --since "24 hours ago"
systemctl --failed
last -x reboot shutdown
ss -ltnp
ומה שחזר, שוב לפי המדריך: 1,676 ניסיונות כניסה כושלים עם סיסמה ב-24 שעות, רובם ל-root. ארבע כניסות מוצלחות עם סיסמה למשתמש ubuntu מכתובת אחת, בתוך פחות מחצי שעה. שרת SSH שמאזין על כל הממשקים. שירות שולחן עבודה מרוחק (XRDP) שלא מצליח לקרוא את מפתח ההצפנה שלו, בזמן שהפורט שלו פתוח לאינטרנט ומקבל סריקות. בעיות בדיסק או במערכת הקבצים לא נמצאו.
הסוכן גם המליץ מה לעשות: לוודא שהכתובת שממנה נכנסו היא של המחבר, ואם לא, להתייחס לזה כחשד לפריצה. זו המלצה טובה. היא גם הרגע שבו כדאי לעצור ולהסתכל מי עוד נמצא על השרת הזה.
הפער: משפט בפרומפט מול מדיניות הרצה
לפי התיעוד של OpenClaw, ברירת המחדל להרצת פקודות על מכונת ה-Gateway היא full, ומצב הבקשות לאישור הוא off. כלומר, הסוכן מריץ פקודות בלי לשאול. זה בדיוק מה שהממשק הראה אצל המחבר, Default (Full Access).
מה שהגביל את הסוכן בשתי הבדיקות היה הבקשה בפרומפט. מודל יכול לציית לבקשה כזאת, ובבדיקות של המחבר הוא ציית. אבל ציות הוא לא אכיפה.
ויש כאן שכבה נוספת. שורת כניסה כושלת בלוג של SSH כוללת את שם המשתמש שהתוקף ניסה, כלומר טקסט שהתוקף בחר. סוכן שקורא את הלוג הזה קורא, בין השאר, טקסט שכתבו התוקפים. OpenClaw מקדיש לסיכון הזה עמוד שלם בתיעוד.
לדעתי, הממצא החשוב במדריך הוא ההגדרה שמתחת לסוכן, זו שמאפשרת לו לכתוב לשרת בדיוק כמו לקרוא ממנו, על שרת שבאותו יום ממש היה תחת ניסיונות פריצה. היכולת לקרוא journalctl היא החלק הפחות מעניין.
שלב 6: לנעול את ההרצה
זה החלק שחסר במדריך. OpenClaw מגיע עם שלוש תבניות מוכנות. לעוזר שרת, לדעתי, cautious היא הנכונה. לפי התיעוד היא עובדת כך: פקודות מרשימת היתרים רצות, כל פקודה אחרת מחכה לאישור בממשק, ואם אף אחד לא עונה, היא נחסמת.
openclaw exec-policy preset cautious
openclaw approvals get --gateway
הפקודה הראשונה מחילה את התבנית על המכונה המקומית, ולכן מריצים אותה על השרת עצמו. השנייה מציגה את המדיניות שבתוקף בפועל, וכדאי להריץ אותה אחרי כל שינוי. מי שרוצה לחסום הרצה על השרת לגמרי יכול להשתמש בתבנית deny-all. ואפשר גם לקבוע כל שדה בנפרד:
openclaw exec-policy set --security allowlist --ask on-miss --ask-fallback deny
שתי הסתייגויות מהתיעוד, שחשובות לא פחות מהתבנית עצמה. הראשונה: רשימת ההיתרים מתאימה לפי קובץ הפקודה. מי שמאשר את systemctl כדי להריץ systemctl --failed מאשר גם systemctl restart, אלא אם מגבילים גם את הארגומנטים, והתיעוד מסביר איך. השנייה: לפי OpenClaw עצמה, האישורים מקטינים סיכון להרצה בטעות, אבל הם לא הגבלה של מערכת הקבצים לקריאה בלבד. פקודה שאושרה יכולה לשנות קבצים לפי ההרשאות של המשתמש שמריץ אותה.
כתבנו כאן על סוכן שפרץ מכונת מעבדה בשבע דקות, והשאלה המעניינת שם הייתה אותה שאלה: מי מקבל רשות להריץ מה.
שלב 7: לסגור את מה שהסוכן מצא
ארבע כניסות מוצלחות עם סיסמה הן סיבה לכבות כניסה עם סיסמה ב-SSH. לפני שעושים את זה, לוודא בחלון נפרד שהכניסה עם מפתח עובדת, ולהשאיר את החיבור הנוכחי פתוח עד הסוף. אחרת נשארים בחוץ.
באובונטו כדאי לכתוב את ההגדרה בקובץ נפרד, ולא בקובץ הראשי. בתמונות ענן של אובונטו יש לפעמים קובץ בתיקייה sshd_config.d שמפעיל כניסה עם סיסמה, ו-SSH לוקח את הערך הראשון שהוא פוגש. קובץ עם מספר נמוך בשם נקרא לפניו:
echo "PasswordAuthentication no" | sudo tee /etc/ssh/sshd_config.d/00-no-password.conf
sudo sshd -t
sudo systemctl reload ssh
sudo sshd -T | grep -i passwordauthentication
השורה השנייה בודקת שההגדרות תקינות לפני הטעינה, והאחרונה מראה את הערך שבתוקף בפועל. הפרטים המלאים במדריך השרת של אובונטו. ואם לא צריך שולחן עבודה מרוחק, זה הזמן לסגור גם את השירות של XRDP ואת הפורט שלו.
מה נשאר מהמדריך
המדריך מסכם את זרימת העבודה כך: לזהות, להסביר, להמליץ, לאשר ידנית, ורק אז לשנות. זו זרימה נכונה. ההבדל הוא מי אוכף את שלב האישור, משפט בפרומפט או הגדרה בשרת.
המחבר מסיים בהמלצה להשאיר את האדם בשליטה על שינויים משמעותיים. בשרת שלו, פקודה אחת הייתה ההבדל בין עוזר שקורא לוגים לבין עוד משתמש עם גישה מלאה, באותו יום שבו מישהו אחר ניסה 1,676 פעמים להיכנס.
מבוסס על המדריך של פרבז מוחמד מ-Techlatest, שפורסם במדיום בספטמבר 2026, ועל התיעוד הרשמי של OpenClaw.





