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

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

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

מעבדה נוספת לאחר סיום המעבדה הזו:

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


 

הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana – על Ubuntu 22.04.01 גרסה 8

ELK

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

הכלים שבונים את ELK Stack הם:

ElasticSearch – מערכת לניתוח טקסט מבוססת Apache Logstash – מערכת לוגים האוספת ומאגדת אותם, היא אוספת לוגים ממערכות שונות כמו winlogbeat,filebeat,metricbeat Kibana – היא המערכת הוויזואלית, המציגה בצורה נוחה למשתמש את הלוגים, ומכילה את בתוכה את ElasticSearch ו Kibana ושלל אפליקציות העוזרות לניתוח המערכת

כלי נוסף במערכת הוא Beats המעביר לוגים אל ELK מכל מערכת Linux & Windows יש כמה כלים ל Beats אבל נתמקד בשלושה winlogbeat – מעביר לוגים מתוך Eventviewer של מיקרוסופט וניתן להגדיר איזה לוגים הוא ישלח לELK filebeat – מתוך קובץ לוגים הנמצא במחשב \ שרת הוא ישלח וניתן להגדיר כמה קבצים שרוצים metricbeat – שולח לוגים לגבי מצב המעבד,זיכרון ה RAM, דיסקים וכל ניטור אחר הקיים במערכת Packetbeat – אוסף נתוני רשת על התחנה Heartbeat – בודק אם התחנה עובדת "האם התחנה חיה?" יש עוד כלי Beats – את כולם ניתן למצוא בקישור הבא אנחנו נתמקד ב בתמונה מתוך האתר *כל הזכויות שמורות ל Elastic* ניתן להבחין שמערכת ה Beats מעבירה מידע ל Logstash ומשם המידע מועבר ל ElasticSearch ואז ל Kibana וכך המערכת אוספת את הנתונים ומסדרת אותם

התקנת ELK 8.X על Ubuntu 22.04.01

 

תחילה נבצע את ההתקנה ולאחר ההתקנה אסביר על הפעולות אותם ניתן לבצע בELK

הדרישות

  • Ubuntu 22.04
  • Windows Server עם IIS (על מנת שנוכל לאסוף לוגים ולהציגם במערכת) וגם מותקן Active Directory כDomain Controller

הגדירו את כרטיס רשת NAT תחילה בצעו עדכון למערכת

sudo apt-get update

כעת התקינו SSH על מנת לבצע התחברות מרחוק

sudo apt-get install openssh-server

כעת התחברו דרך Putty אל המערכת, הקישו את שם המשתמש שיצרתם בהתקנה של Ubuntu

והקישו

sudo -i

כעת אתם עובדים עם המשתמש Root ונוכל לבצע את ההתקנה בצורה קלה יותר

נתקין nano

apt-get install nano

נתחיל בהורדה של שלושת הרכיבים והתקנתם

נתחיל בהורדה של Java והגדרתו

sudo apt install default-jdk

נבדוק את גרסת ה Java

java -version

כעת נוריד את ההגדרה של Https להפעלה בELK

sudo apt-get install apt-transport-https

נתחיל מהורדה והתקנה של Elastic

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

כעת נוסיף את הרפוסטורי

echo "deb https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list

נבצע עדכון לרפוסטורי

sudo apt update

כעת נתקין את ElasticSearch

sudo apt install elasticsearch

נערוך את קובץ ההגדרות של ElasticSearch

sudo nano /etc/elasticsearch/elasticsearch.yml

נוריד את ה# מכל המקומות שסימנתי בחץ

ונשנה את כתובת ה IP ל Localhost

כעת נרד למטה עד לסוף המסמך ושם נשנה מ true  ל false את מה שיסמנתי בחץ

 

כעת נפעיל את ElasticSearch נגדיר שיעלה בכל הפעלה מחדש

sudo systemctl start elasticsearch

 

sudo systemctl enable elasticsearch

כעת נבדוק שES מאזין לפורט 9200

curl -X GET "localhost:9200"

אם הוא מאזין נקבל מידע חזרה

נתקין את Logstash

sudo apt install logstash

כעת ניצור LogStash שנרצה למשל ל syslog הפורט שהגדרתי הוא 1200, אכן לא הפורט הרגיל של  Syslog שהוא 514 , וזו כי ELK לא מאפשר להשתמש בפורטים שמתחת ל1024 ולכן במעבדה של pfsense נגדיר שהsyslog יגיע בפורטוקול 1200

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

נכניס את כל התוכן הבא

input {

syslog {
type => syslog
port => 1200
}
}




filter {
# Add any filters here
}




output {
elasticsearch {
hosts => ["http://localhost:9200"]
}
}

כעת נפעיל את logstash

sudo systemctl start logstash

נגדיר שיפעל בהפעלה הבאה וכן הלאה

sudo systemctl enable logstash

נפתח בUFW אם פועל (הוא כרגע לא פועל, אבל נכניס בכל זאת) את הפורט 5044

sudo ufw allow 5044/tcp

התקנת KIbana  הGUI של ELK

נבצע התקנה

sudo apt install kibana

נערוך את קובץ הקונפיג

נוריד את ה# ונשנה את הכתובת ל0.0.0.0

ובחץ השני נוריד רק את הסולמית ונשנה ל master

sudo nano /etc/kibana/kibana.yml

נפתח את פרוטוקול ה 5601 שאיתו נכנס למערכת

sudo ufw allow 5601/tcp
sudo ufw allow 1200/tcp

ונגדיר שיעלה בכל ריסטארט

sudo systemctl enable kibana

נפעיל את Kibana

sudo systemctl start kibana

נקיש בכתובת הדפדפן את הכתובת אייפי של המכונה ואת הפורט 5601

http://youipaddress:5601

אם המערכת לא עולה וכותבת kibana server is not ready

נבצע ריסטארט ל elasticsearch בשביל לזרז על עליית המערכת

sudo systemctl restart elasticsearch

ערכו עם VIM את elasticsearch config file שוב

לאחר מכן בצעו ריסטארט לkibana ו לelsaticsearch

sudo systemctl restart elasticsearch

אם עדיין לא עולה ה Kibana

בדקו עם הפקודה הבאה את מצב ה Kibana

tail -f /var/log/kibana/kibana.log

אם קיבלתם את השגיאה 

OUTDATED_DOCUMENTS_SEARCH_OPEN_PIT -> OUTDATED_DOCUMENTS_SEARCH_OPEN_PIT. took: 64008ms.

בדקו איזה Indecies לא משוכיים ומחקו אחד אחד

curl -XGET http://localhost:9200/_cat/shards?h=index,shard,prirep,state,unassigned.reason| grep UNASSIGNED

איפה שכתוב .kibana_task_manager_8.6.0_001 אתם יכולים למחוק אותם

curl -X DELETE http://localhost:9200/.kibana_task_manager_8.6.0_001

כעת אם אין תקלות, נוכל להמשיך

לחצו Configure Manually

 

המשיכו הלאה 

ולבסוף אישור

בשלב זה – עדיף לקחת SNAPSHOT שאם בהמשך יהיה תקלה נוכל להמשיך במעבדה במהירות

המערכת כעת עובדת, על מנת שנוכל לבדוק מה המערכת יודעת לעשות, נאלץ להגדיר מקור שישלח את הלוגים, נתחיל מ WinlogBeat

מעבדה מספר 1 – קבלת Event Viewer מ Domain Controller וקבלת מידע

  • מי איפס למי סיסמא
  • מי ננעל לו החשבון

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

 

Winlogbeat

Winglogbeat הוא תוסף שניתן להתקין בכל מערכת ווינדוס והוא שולח Event Viewer אל מערכת ה ELK, האירועים שנאספים מוגדרים מראש בקובץ הקונפיג וניתן להחליט שישלח אירועים נוספים חוץ מאלו שהוא שולח.

הורידו את הכלי מהקישור הבא

https://www.elastic.co/downloads/beats/winlogbeat

בשביל להבין יותר טוב מדוע זה כלי כל כך יעיל, נבצע מעבדה בה נקבל את אירועי האבטחה משרת ה DC – אירועי האבטחה בשרת DC למעשה כותבים כל פעולה "אבטחתית" שבוצעה ב AD וכך נוכל לקבל מידע חשוב על איפוסי הסיסמאות, משתמשים שננעלים וכו'

נכנס לשרת ה DC שלנו ו ונפתח Powershell עם הרשאות מנהל

העתיקו את התיקייה המחולצת של winlogbeat לכונן C:

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

cd c:\winlogbeat-*

כעת נתקין את winlogbeat

.\install-service-winlogbeat.ps1

כעת הוא יציג לנו ששירות בשם winlogbeat התווסף למערכת והוא אינו פועל, אל תפעילו אותו עדיין

כעת היכנסו לתיקייה וערכו את הקובץ winlogbeat.yml (עדיף עם notepad++)

ערכו אותו עם עורך כלשהו (עדיף notepad ++) ורשמו את כתובת ה IP של ELK

כעת פתחו את services.msc

והפעילו את שירות ה Winlogbeat

אופציה נוספת היא לפתוח את PowerShell בתור מנהל ולהקיש

 Get-Service -DisplayName winlogbeat | Start-Service

כעת נחזור ל ELK

נלחץ על Create Data View

כעת הלוגים כבר נשלחים מהWindows Server שהוא גם ה DC שלנו

נוכל להבחין זאת בצד ימין שהוא קיבל לוגים מ Winlogbeat-8.6.0

על מנת להגדיר את הPattren נגדיר כמו אצלי

כעת בחלון ה Discover יש את כל הלוגים שהם ה Evenet Viewer שאנחנו מקבלים

עכשיו השאלה הגדולה היא, מה עושים עם האלפי שורות מידע האלו? מה הם נותנים לנו?

עכשיו ניצור לנו מיני SIEM, נניח ואנחנו רוצים לדעת מי איפס למי סיסמא, תחיל נאפס בAD אצלנו סיסמא למשתמש על מנת שיווצר אירוע כזה ב Event Viewer והוא כמובן ישלח על ידי ה Winlogbeat

אז נאפס סיסמא למשתמש בארגון

כעת נפתח את Event Viewer ונחפש את האירוע ב Security

מצאנו אותו ה Event ID של איפוס סיסמא הוא 4724

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

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

כעת נוכל להבחין שהאירוע הוא 4724, וישנם עוד עמודים עם מידע נוסף, נעבור לעמוד 2

כאן נוכל להבחין שהמשתמש שלו שיננו סיסמא שהוא Noy והמשתמש שביצע את השינוי הוא Administrator

נעתיק את User.Name לNotepad.exe

ונעבור לעמוד 3

בעמוד 3 העתיק את ה Attribute שהוא 

winlog.event_data.targetusername

ואחד נוסף הוא האירוע עצמו

winlog.event_id

כעת נוכל ליצור Dashboard שבו נוכל להציג את כל האירועים שמגיעים אל ה ELK בצורה נוחה

כעת נלחץ על Create Dashboard

Visualize הם למעשה החלונות המרובעים שבהם מוצגים העוגות, הטבלאות וכו' וה Dashboard הוא המסך הראשי שבהם הם נמצאים

אז ניצור Visualize חדש

כעת נלחץ על + ואז נגדיר שיציג לנו רק אירועים שהם Event ID 4724

בצעו כמו התמונה ובסיום לחצו Add Filter

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

כעת בצד שמאל בחיפוש נחפש את ה Attributes שהעתקנו קודם, נתחיל מ winlog.event_data.targetusername

נלחץ עליו ואז נוסיף אותו ב +

כעת נוסיף את user.name שהוא המשתמש ששינה את הסיסמא (בלוג האחרון הוא Administrator0)

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

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

נלחץ על הראשון

נשנה ל20 על מנת שיציג 20 התראות בטבלה שלנו

כעת נשנה את השם ל The User  Password Have Changed שכן זה הAttribute שמציג למי השתנה הסיסמא

לאחר מכן שנו גם לAttribute השני שיהיה כתוב נניח The User Who Changed The Password

ולאחר מכן שמרו את ה Visualize 

כעת נשמור את ה Dashboard כולו ונלחץ שוב Save

בגלל שה Dashboard יכיל את כל התצוגות שנגדיר ל Active Directory נתן לו את השם הזה

והתוצאה לפניכם

אירועים נוספים שניתן להוסיף

  • כמות הפעמים שמשתמשים ננעלים ומקור הנעילה – אירוע מספר 4740
  • האם משתמש התווסף לקבוצת ה Domain Admins (או לכל קבוצה) – אירוע מספר 4728

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

Leave a Comment