יום שלישי, מרץ 03, 2026

לוגים זה כיף! איך אני משתמש ב rsyslog מרוחק ולא systemd בשביל ריכוז לוגים

אני מתנצל לפני  אנשי ה  systemd , אבל אני משתמש במערכת ניהול לוגים מרוכזת על בסיס rsyslog ומבוססת קבצים, אני בוחר שלא להשמש ב TLS , אז מבחינת אבטחה אני לא ממליץ את זה ב production אם אתם חשופים לרשתות אחרות. אצלי בבית יש מספר מערכות vlanים שעובדות בצורה מופרדת, כלומר יש לי בבית רשתות מנותקות מהאינטרנט ושם יש vlanים נפרדים ועדיין בתוך המערכת על כל מחשב יש חומת אש ואלו שולחים מידע לשרת הזה, אבל אני בחרתי לא להתקין IDS על המחשבים  אצלי, למה ? כי יש לי חיים.

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

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

במחשבי לקוח שיש אפשרות להפעיל rsyslog כלקוח (מבוססח לינוקס )  

הקינפוג בשביל לשלוח זה מספיק להוסיף את המקטע בתוך /etc/rsyslog.con 
  *.*  action(type="omfwd" target="192.168.10.4" port="514" protocol="tcp"
            action.resumeRetryCount="100"
            queue.type="linkedList" queue.size="10000")

  
זה פשוט מעביר למחשב מרכזי על גבי tcp , ללא שום אבטחה כלל, לא מורכב מדי.
כמובן, חשוב מאוד להגדיר את logrotate בשביל לנהל מקום בצורה טובה יותר.
 
גם בוינדוס יש מספר אפשרויות החל מהצורה הרשמית  ועד מנוע שליחה קנייני (כמו שאני משתמש בו) ושולח לוגים גם מ Event Log וגם SQL  ועוד מספר מערכות ישירות ל שרת rsyslog מרוחק ומרכזי. כן אני משתמש בקוד קנייני, זה החיים ! אני גם כותב קוד קנייני !
 
בשרת אליו שולחים אני הגדרתי שמירה תחת תיקיית בצורה הבאה (זה פשוט מפעיל האזנה על TCP): 
module(load="imtcp")
input(type="imtcp" port="514")
וגם קובץ בודד שאוסף הודעות (המחשב שאוסף את הלוגים נקרא hel על שם הדמות מהמיתלוגיה הנורדית)
    cat /etc/rsyslog.d/10-remote.conf 
	$template RemoteStore, "/var/log/remote/%HOSTNAME%/%timegenerated:1:10:date-rfc3339%"
	:source, !isequal, "hel" -?RemoteStore
	& stop

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

כמובן שצריך לאפשר ברמת ה firewall לקבל את ההודעות הללו  ממחשבים מותרים.
 
מבחינת אבטחה , אני לא משתמש פה ב tls בכלל פה , וזה ממש לא בסדר וומסוכן, אבל יש סיבה , יש לי מכשירים שיש להם בעיות עם tls ברמת לקוח, ואני ממש לא הולך להחליף אותם בגלל רק זה (כי זה לא חשוף לאינטרנט כלל וזה נמצא על vlan פרטי), כלל המכשירים ששולחים אצלי לוגים כמו רכזות , נתבים , מדפסת סורק ועוד וכולם שולחים בצורה יפה ופשוטה למחשב מרכזי.
 
עכשיו ? האם זה מושלם ? ממש לא , לוגים שהם מעל שורה אחת (מכילים CR LF או LF ) ישונו ואז יש קושי לחלק מהאנשים לקרוא את הלוגים הללו. בחלק מהלקוחות יש בעייה עם שליחה עם פקטה בגודל של מעל 1K של מידע (לא מפנה פה אצבעות ... אבל זה קיים), זה מחייב אחזקה יותר רצינית של עוד מחשב שמעבד לוגים, אבל זה לא דורש יותר מדי , למשל מודם 4G מייצר 30 מ"ב של לוגים ביממה, שזה די קלום , מודם vDSL ? הוא מייצר ברמת ה 100K ליממה, מודם של סיב אופטי ? מייצר כ חצי מגה ביום במקרה הטוב , מנוע SQL פחות מ1 מ"ב ליום .
 
אם רוצים פתרון טהור על גבי systemd , יש פתרון  מסוג systemd-journal-remote, אני אישית בוחר שלא להשתמש בפתרון הזה מהסיבה הפשוטה כי יש לי מכשירים שצריכים לשלוח הודעות לוג אבל הם לא מפעילים systemd, אז לי זה לא מתאים.

אין תגובות: