Home אבטחת מידעInformation Security הסבר על Syslog ושליחתו ל ELK מpfSense

הסבר על Syslog ושליחתו ל ELK מpfSense

0 comment
נהנתם מהמאמר ? שתפו אותו!

מעבדה ראשונה שיש לבצע תחילה:

הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana – על Ubuntu 22.04.01 גרסה 8 וקבלת אירועים Event Viewer מ Domain Controller


 

Syslog

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

המטרה של Syslog היא לשלוח אירועים שמערכת מסוימת מייצרת אל שרת לוגים מרכזי, דוגמה קלאסית זה Firewall , ניתן להגדיר ל FW לשלוח Syslog אל שרת מרכזי, זאת אומרת שנניח כל הלוגים על חסימות או פאקטות שעברו וכך להעבירם למיקום מרכזי אחד.
כל מערכת אבטחת מידע יודעת להעביר Syslog ממערכות NAC, EDR, Firewall, VPN ועוד

ה Syslog שכל מערכת שולחת חייב להיות מורכב בצורה מאוד מסוימת, דוגמה לSyslog

<30>Jan 14 12:00:05 CheckPoint-Firewall: [FW1] 192.168.1.10 192.168.2.10 80 Block

המספר 30 הוא "דחיפות" הלוג – Priority
התאריך זה כמובן תאריך יצירת הלוג
CheckPoint-Firewall זה מקור ההודעה
[FW1] – הקטגוריה של הלוג – במקרה כאן זה שם ה FW
192.168.1.10 192.168.2.10 80 Block – תוכן הלוג עצמו

Syslog עובד בפרוטוקול 514 וברוב המקרים השימוש שלו יהיה כאשר ישנם מערכות אבטחה רבות בארגון ונרצה להעביר מכל מערכת את הלוגים שלה אל מערכת SIEM מרכזית וכך בלוח בקרה אחד מקבלים למשל את כל אירוע ה EDR או את החסימות שביצעה מערכת NAC וכו'

במאמר ומדריך זה אציג שליחת Syslog מFirewall מסוג pfSense אל ELK והצגתו ב Dashbaord

קבלת Syslog  מ pfSense

במאמר זה השתמשתי בשני מדריכים האחד

ב pfsense נעבור ל Status ושם ל System Logs

נוכל לסמן ב V את Log Packtes matched from the default block rules in the ruleset שכן זה יעביר גם לוגים של חסימות שבוצע על FW בחוקים שהגדרתם

בחלון  של Remote Logging Options נסמן ב V על מנת להפעיל את שליחת הלוגים של Syslog

נגדיר שהשרת שיקבל את הלוגים הוא שרת ה ELK שאצלי הכתובת היא 192.168.19.140:1200

נסמן גם את Everything ונשמור

אם אתם שואלים את עצמכם מודע פורט 1200 אם פרוטוקול syslog הוא 514, אז התשובה היא יחסית פשוטה

כיוון שאנחנו מעבירים את הלוגים ל ELK, ELK עצמו לא מאפשר ב Logstash לפתוח פרוטוקול 512, הוא מגדיר את הפרוטוקולים הללו כמוגנים ולכן הגדרתי 1200

הפורט 1200 הגדרתי כבר במעבדה של ELK, בקובץ ה Config  של logstash

זה צילום מסך מהמעבדה של ELK שם הגדרתי ש logastsh יקבל את הפרוטוקול מ 1200

כעת נחזור ל ELK ונעבור ל Stack Managment

נבדוק שאכן הגיעו לוגים מ pfsense

אם לא הגיעו, בדקו ששרת ה ELK מאזין לפרוטוקול 1200 ע"י פתיחת CMD או טרמינל בלינוקס

telnet 192.168.19.140:1200

אחרי שבדקנו שהגיעו לוגים, הגיע הזמן לייצר data view, זה אומר הצגה של הלוגים

נחזור למסך ה Discover ושם נלחץ על ה data view שכבר מוצג ואז Create a data view

ניתן שם שזהה ללוג שמתקבל מ syslog

כמו בתמונה

חשוב מאוד, לוודא ש pfsense לא חוסם שום דבר (אנחנו בסביבת מעבדה אז מותר 🙂  )

***נוודא ש Snort עובד ומוגדר***

כעת נפתח Kali ונבצע Nmap על pfsense

תחילה נשנה את כתובת ה IP של קאלי שתיהיה סטטית והכי חשוב זה ה Default Gateway שיפנה אל הכתובת IP של pfsense

לא לשכוח בקאלי להגדיר Manual ולאחר ההגדרה לנתק את כרטיס הרשת ולהחזיר אותו

כעת נבצע nmap

בביצוע NMAP גרמתם לIPS ב pfSense לחסום אותכם

כעת עברו ל Discover ושם וודאו כי מוצג ה Syslog-pfsense שיצרתם קודם

ב pfsense ראינו שהמערכת שחסמה אותנו היא IPS בעזרת ET Open ולכן נחפש ET SCAN בחיפוש

נפתח את כל הלוג – בכפתור הקטן בצד שמאל

ונקבל את ה syslog בשלמותו

כעת נעתיק את ההודעה עצמה

[1:2010937:3] ET SCAN Suspicious inbound to mySQL port 3306 [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 192.168.19.128:48354 -> 192.168.1.10:3306

Grok

ועכשיו בשביל להתקדם , תכירו את grok

GROK הוא למעשה Parser , זאת אומרת שהוא ע"פ קרטריונים, יכול לקחת מידע ו"לקטלג" אותו כך שנוכל לעבוד מול ה ELK
כמו שהבחנתם ה syslog שלח הודעה ארוכה מאוד

[1:2010937:3] ET SCAN Suspicious inbound to mySQL port 3306 [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 192.168.19.128:48354 -> 192.168.1.10:3306

להודעה הזו צריך לבצע Parsing שכן אני רוצה לחלק את זה בצורה הבאה (לצורך הדוגמא)

Time: [1:2010937:3]

Origin: ET SCAN Suspicious inbound

protocol: mySQL

port: 3306

Class:: [Classification: Potentially Bad Traffic] [Priority: 2] {TCP}

Source IP: 192.168.19.128:48354

Destination IP: 192.168.1.10:3306

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

ל GROK יש כמה מאפיינים

תוכלו להרחיב מה כל אופרטור עושה באתר של EKL

בחיפוש למעלה בELK נרשום GROK ונכנס ל GROK Debugger

נדביק את הלוג שהגיע

[1:2010937:3] ET SCAN Suspicious inbound to mySQL port 3306 [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 192.168.19.128:48354 -> 192.168.1.10:3306

נדביק את ה Parsing שהכנתי, או שאתם כתבתם

%{WORD:et_scan_id} %{WORD:et_scan_event} %{WORD:et_scan_traffic} inbound to %{WORD:et_scan_service} port %{NUMBER:et_scan_port} %{GREEDYDATA:et_scan_classification} %{GREEDYDATA:et_scan_priority} {%{WORD:et_scan_protocol}} %{IP:et_src_ip}:%{NUMBER:et_src_port} -> %{IP:et_dst_ip}:%{NUMBER:et_dst_port}

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

כעת צריך לזכור, שאנחנו רוצים שהlogstash יבצע את ה parsing עוד שההודעה מגיעה

נעבור לשרת הELK, נתחבר אליו ב Putty

אז נערוך את קובץ הקונפיג שלו שיצרנו במעבדה הקודמת של ELK

sudo nano /etc/logstash/conf.d/syslog.conf

בדיוק איפה שכתוב # add any filters here

נוסיף את ה פילטר של גרוק

 grok { match => { "message" => "%{WORD:et_scan_id} %{WORD:et_scan_event} %{WORD:et_scan_traffic} inbound to %{WORD:et_scan_service} port %{NUMBER:et_scan_port} %{GREEDYDATA:et_scan_classification} %{GREEDYDATA:et_scan_priority} {%{WORD:et_scan_protocol}} %{IP:et_src_ip}:%{NUMBER:et_src_port} -> %{IP:et_dst_ip}:%{NUMBER:et_dst_port}" } }

נשמור ונצא

כעת נבצע ריסטארט לשירות ה logstash שיטען את ה GROK parsing שהכנו

sudo systemctl restart logstash

המלצה: עברו לווינדוס שלכם ובדקו ע"י telnet שפרוטוקול 1200 עובד

telnet 192.168.19.140 1200

אם לא עובד, בדקו שה{ } שהסוגריים המסולסלים נכונים

אם הכל עובד , נמשיך

כעת ב ELK נקבל לוגים חדשים והפעם לפי הסדר הנכון וה Parsing של grok

  • אם לא מגיעים לוגים חדשים – תגדירו יותר מ15 דקות אחרונות

  • ואם עדיין לא מגיע – הסירו את החסימה מ pfsense snort ובצעו בקאלי שוב סריקה ע"י Nmap

כעת נעבור ל dashboard

13 מELK

ניצור Dashboard

14 מ ELK

וכעת בצד שמאל נרשום כל אירוע ואירוע ונלחץ על ה +

עד שכולם יהיו בטבלה

  • לא לשכוח לשנות את התצוגה של החלון לטבלה – סימנתי לכם באדום

אחרי שהכל התווסף נוכל בצד ימין ללחוץ על כל אחד ולשנות את שמו כמו למשל Source IP וכן הלאה

לסיום, נקבל Visualize שיציג לנו את כל החסימות IPS ב pfSense מבצע!

 

 

 

 

 

מאמרים קשורים

Leave a Comment