פתרון בעיות נפוצות
במאמר הזה ריכזנו טיפים ושיטות שיעזרו לכם לאבחן ולפתור בעיות נפוצות שנתקלים בהן במהלך הפריסה וההפעלה של הסוכן המרוחק של Google Security Operations.
בעיה של אי-התאמה במפתחות
הבעיה הזו מתרחשת כשהמפתחות הפרטיים ב-Google Security Operations וב-Remote Agent לא תואמים. כדי לפתור את הבעיה, צריך לוודא שהמפתח במשאבי הנציג תואם למפתח ב-Siemplify agent_db.
כשל במחבר המרוחק
אם מחבר מרחוק נכשל, פועלים לפי השלבים הבאים:
- מוודאים שמופע השילובים הותקן בהצלחה בנציג.
- בודקים את יומני הפעילות של סוכן ברמת השגיאה כדי למצוא כשלים בתהליך החיבור.
- בודקים את אותה הגדרת מחבר באופן מקומי ורואים אם יש שגיאות.
ההתקנה נכשלה: מערכת ההפעלה המארחת לא נתמכת או שיש חוסר תאימות בגלל סוף תקופת התמיכה (EOL)
אם התקנות חדשות או שדרוגים אוטומטיים נכשלים בגלל שגיאות מעקב של glibc וחסימות של קריאות מערכת, צריך לפעול לפי השלבים הבאים:
- מוודאים שבסביבת המארח לא פועלת מערכת הפעלה מדור קודם, שייתכן שאין בה הוקים מודרניים של קריאות מערכת.
- לארח מחדש את סביבת הסוכן בהפצת Linux ארגונית עם הגרסה הרשמית האחרונה.
-
בפריסות של תוכנת התקנה ידנית, צריך לוודא שהמארח מריץ מערכת הפעלה נתמכת, כמו Debian 12 או Red Hat Enterprise Linux (RHEL) 8.7:
בודקים את
/etc/os-release: מריצים את הפקודה הבאה ומחפשים אתNAME=ו-VERSION_ID=:cat /etc/os-release- ב-Debian 12: מחפשים את
NAME="Debian GNU/Linux"ו-VERSION_ID="12". - ב-RHEL 8.7: מחפשים את
NAME="Red Hat Enterprise Linux"ו-VERSION_ID="8.7".
אם המארח מריץ את RHEL 9 או 10 (או גרסה מאוחרת יותר), צריך לפרוס את הסוכן המרוחק באמצעות מנוע קונטיינר נתמך (Podman או Docker) במקום באמצעות תוכנת ההתקנה הידנית. קובצי אימג' של קונטיינרים שנוצרו מראש לגרסאות של Remote Agent אחרי 2.5.0.4 מבוססים על Debian 12, שגם פותר בעיות של חוסר תאימות בינארית של Python wheel (
.whl) (כמוModuleNotFoundErrorל-TIPCommonאוSiemplifyAddressProvider) בסוכני CentOS 7. מידע נוסף זמין במאמר מערכות הפעלה נתמכות. - ב-Debian 12: מחפשים את
הגדרת הקונטיינר שולפת את השכבה התפעולית הקודמת במקום את ה-build האחרון
אם הרצה מחדש של פקודות להגדרת קונטיינר מושכת בטעות שכבה תפעולית קודמת במקום את ה-build של התוכנה החדשה, מריצים את הפקודות הבאות כדי למשוך באופן מפורש את קובץ האימג' האחרון:
ב-Docker:
docker pull us-docker.pkg.dev/siem-ar-public/images/agent:latestל-Podman:
podman pull us-docker.pkg.dev/siem-ar-public/images/agent:latest
כדי לוודא שהפריסה פועלת בגרסת התוכנה העדכנית ביותר, תמיד צריך לשלוף את קובץ האימג' האחרון לפני שמריצים את קונטיינר הסוכן. אם משיכה מ-docker.io מבקשת פרטי כניסה בגלל הגבלת קצב של יצירת בקשות, צריך למשוך את קובץ האימג' מנקודת הקצה הציבורית של Artifact Registry (us-docker.pkg.dev/siem-ar-public/images/agent:latest). לדומיינים הנדרשים ברשימת ההיתרים של חומת האש, ראו דרישות הרשת וחומת האש.
כשל בפריסת סוכן Docker
אם הפריסה של Docker נכשלת, פועלים לפי השלבים הבאים:
- מסירים את מאגר Docker:
מריצים את הפקודה הבאה כדי להציג את הקונטיינרים שפועלים:
docker psמריצים את הפקודה הבאה כדי להסיר את הקונטיינרים שנכשלו:
docker rm -f container_id_or_name
- הסרת תמונות:
מריצים את הפקודה הבאה כדי להציג את רשימת התמונות:
docker imagesמריצים את הפקודה הבאה כדי להסיר את התמונה:
docker rmi image_id_or_name
- הסרת כרכים:
מריצים את הפקודה הבאה כדי להציג את רשימת אמצעי האחסון:
docker volume lsמריצים את הפקודה הבאה כדי להסיר את אמצעי האחסון:
docker volume rm volume_name
- פורסים מחדש את הנציג. מידע נוסף זמין במאמר יצירת סוכן באמצעות Docker.
הסוכן תקוע בסטטוס "בהמתנה לסוכן"
אם הנציג נפרס בהצלחה אבל הסטטוס נשאר "בהמתנה לנציג", בצעו את השלבים הבאים כדי לפתור בעיות:
- בדיקת הקישוריות של המארח: בודקים את הקישוריות לאינטרנט של המכונה המארחת של הסוכן (לדוגמה,
curl www.google.comאוping 8.8.8.8). אם הבדיקה נכשלת, הבעיה היא בחיבור לאינטרנט של המארח. בדיקת הקישוריות של הקונטיינר: אם בדיקת המארח עוברת, נכנסים למעטפת של הקונטיינר באמצעות
docker exec -it container_ID bashובודקים שוב את הקישוריות. אם אין קישוריות בקונטיינר, מפעילים מחדש את שירות Docker במכונה המארחת (service docker restart).מריצים את הפקודה הבאה:
docker exec -itbash - בודקים שוב את הקישוריות כמו קודם.
- אם אין קישוריות, מריצים את הפקודה הבאה כדי להפעיל מחדש את שירות Docker מהמכונה המארחת (לא מהמאגר):
service docker restart מריצים את הפקודה הבאה כדי להפעיל מחדש את הקונטיינר:
docker start
בדיקת שגיאות ביומני הקונטיינרים
אם השלב הקודם לא עזר, וסטטוס הסוכן עדיין "ממתין לסוכן" אחרי רענון הדף Remote agent ב-Google SecOps, מתחברים שוב לקונטיינר ומורידים את היומנים.
- מאתרים את היומנים בספרייה
/var/log/SiemplifyAgent/. - כדי לזהות את שורש הבעיה, חפשו שגיאות בקובצי היומן.
- מאתרים את היומנים בספרייה
מוודאים שחומת האש מאפשרת תנועת HTTPS יוצאת ביציאת TCP
443אל נקודות הקצה של Publisher, של ה-API של Chronicle לפי מיקום ושל Google Cloud האימות. צריך גם לוודא ששרתי proxy בשכבת האפליקציה או חומות אש של Deep Packet Inspection (DPI) עוקפים את בדיקת ה-SSL/TLS של המארח של Remote Agent. רשימת הדומיינים הנדרשים מופיעה במאמר דרישות הרשת וחומת האש.
בעיות ברשת ה-DNS
אם יש שגיאות בפענוח ה-DNS או בעיות בחיבור לרשת בקונטיינר, מוסיפים את --network host לפקודה docker run. שימוש במצב רשת מארחת מאפשר לקונטיינר לשתף ישירות את מקבץ הרשת (network stack) ואת הגדרת ה-DNS של המכונה המארחת.
קובץ האימג' של Docker לא נטען (העברת IP4 מושבתת)
אם מופיעה שגיאה ב-CLI כשמנסים לטעון קובץ אימג' של Docker (מערכת) או סוכן של Google SecOps, יכול להיות שהעברת IP4 מושבתת. כדי להפעיל את ה-API ולהפעיל מחדש את הנציג:
מוסיפים את השורה הבאה לקובץ
/etc/sysctl.conf:net.ipv4.ip_forward=1שימו לב שצריך להשתמש בכלי לעריכת קבצים (כמו nano, למשל:yum install nano -yמריצים את הפקודה הבאה כדי להפעיל מחדש את שירות הרשת:
systemctl restart networkמריצים את הפקודה הבאה כדי להפעיל מחדש את שירות Docker:
sudo systemctl restart dockerמריצים את הפקודה הבאה כדי לבדוק אם הקונטיינר פועל:
docker psאם הקונטיינר לא פועל, מריצים את הפקודה הבאה כדי להציג את כל הקונטיינרים (כולל אלה שהופסקו):
docker ps -aאם הקונטיינר מופיע ברשימה אבל הוא נעצר, מריצים את הפקודה הבאה כדי להפעיל אותו:
docker start container_id_or_name- אם הסוכן או המערכת עדיין לא פועלים אחרי הפעלה מחדש של Docker ושל הקונטיינר:
מריצים את הפקודה הבאה כדי לעצור את הקונטיינר:
docker stop container_id_or_nameמריצים את הפקודה הבאה כדי למחוק את הקונטיינר:
docker rm container_id_or_nameמריצים את הפקודה הבאה כדי למחוק את התמונה:
docker rmi image_name- טוענים את התמונה שוב.
שגיאה אחרי כיבוי או הפעלה מחדש של Agent
מריצים את הפקודה הבאה כדי לאלץ את ההפעלה של סוכן ההתקנה:
systemctl start supervisord
מריצים את הפקודה הבאה כדי לאלץ את ההפעלה של סוכן Docker:
docker start
משימות של סוכן מרוחק נכשלות בסביבות מוקשחות
כשפורסים סוכן מרוחק במארח Linux מוקשח כמו RHEL 8, יכול להיות שמשימות הסוכן (כולל שמירה או שדרוג של שילוב, או הפעלת מחברים ופעולות) ייכשלו או יסתיימו עקב זמן קצוב לתפוגה בממשק המשתמש, בזמן שסטטוס הסוכן יישאר פעיל. הבעיה הזו מתרחשת כשאכיפת האבטחה של מערכת ההפעלה המארחת – כמו SELinux במצב Enforcing, AppArmor או תוכנת אבטחה של נקודות קצה – חוסמת פקודות של מערכת ההפעלה שמבוצעות על ידי הנציג בתוך הקונטיינר.
כדי לפתור את הבעיה, צריך להחריג את הסוכן המרוחק ממדיניות האכיפה של אבטחת המארח שחוסמת את פקודות מערכת ההפעלה שלו. כדי לאבחן ולפתור את הבעיה:
בודקים אם SELinux נמצא במצב
Enforcingבמכונה המארחת:getenforce sestatusכדי לבדוק אם יש ב-
/var/log/audit/audit.logפקודות שנחסמו לאחרונה או פעולות שנדחו, בלי להחזיר את כל קובץ היומן, מריצים את הפקודה הבאה:sudo grep -i "denied" /var/log/audit/audit.log | tail -n 50אתם יכולים גם לבדוק את יומני האבטחה של נקודות הקצה במארח, כדי לראות אם יש פעולות חסומות שקשורות לתהליכים של קונטיינר הסוכן.
החרגת הסוכן המרוחק ממדיניות האבטחה החוסמת במארח:
- בפריסות בקונטיינרים (Docker או Podman), צריך להחריג את כל הקונטיינר של הסוכן המרוחק כשמפעילים אותו בפעם הראשונה. כדי לעשות את זה, מוסיפים את
--security-opt label=disable(ל-SELinux) או את--security-opt apparmor=unconfined(ל-AppArmor) לפקודהdocker runאוpodman run. - מגדירים כללי מדיניות מותאמים אישית של SELinux, פרופילים של AppArmor או פטורים מאבטחה של נקודות קצה (endpoint) מארחות לספריות של הסוכן המרוחק (
/opt/SiemplifyAgent,/home/siemplify_agent/agent_sourceו-/var/log/SiemplifyAgent) ולקובצי ההפעלה (/usr/local/bin/python3.11,/usr/local/bin/pip3ו-/usr/bin/supervisord) כדי שפקודות של מערכת ההפעלה לא ייחסמו.
- בפריסות בקונטיינרים (Docker או Podman), צריך להחריג את כל הקונטיינר של הסוכן המרוחק כשמפעילים אותו בפעם הראשונה. כדי לעשות את זה, מוסיפים את
לחלופין, אם אתם לא יכולים להגדיר פטור ממוקד מ-SELinux, הגדירו את SELinux למצב
Permissiveבאופן קבוע בכל ההפעלות מחדש על ידי הגדרתSELINUX=permissiveב-/etc/selinux/configבמארח.אם אי אפשר לשנות את
/etc/selinux/configאו שצריך להחיל את השינוי באופן מיידי בלי להפעיל מחדש, מריצים את הפקודה הבאה כדי להעביר את SELinux למצבPermissiveבאופן זמני:sudo setenforce 0
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.