Home אבטחת מידעPenetration Testing - Defense הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana

הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana

by Tal Ben Shushan 12/06/2019 0 comment
הסבר והתקנת ELK – ElasticSearch | Logstash | Kibana

במאמר זה אסביר כיצד עובד ELK מהם הכלים בתוכו וכיצד נשתמש בו.

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

הדרישות

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

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

sudo apt-get update

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

apt-get install openssh-server

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

והקישו

sudo -i

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

נתקין nano

apt-get install nano

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

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

sudo apt install openjdk-11-jdk
java -version
update-alternatives –config java
echo "JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/" >> /etc/environment
source /etc/environment
sudo echo $JAVA_HOME

כאשר אתם מקישים את הפקודה

sudo echo $JAVA_HOME

חובה שתקבלו את ה Output 

/usr/lib/jvm/java-11-openjdk-amd64/

שכן Logstash מחייב אותנו לעבוד עם Java

כעת נוריד את ההגדרה של 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/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install elasticsearch

נוריד את Kibana ונתקין

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update && sudo apt-get install kibana

כעת נוריד ונתקין את Logstash

sudo apt-get update && sudo apt-get install logstash

 

אך תחילה נערוך את הקובץ Kibana.yml על מנת שנוכל להיכנס מכל מחשב ל Kibana נערוך את הקובץ

sudo nano /etc/kibana/kibana.yml

נוריד את # מ server.hosts ונכניס 0.0.0.0 ממש כמו בתמונה

נגדיר שכל לוג שמגיע מBeats יגיע לפורט 5044 ואז לKibana בפורט 9200

cd /etc/logstash/conf.d
nano logstash.conf

נכניס לתוך הקובץ את הנתונים הבאים ולאחר מכן נשמור את הקובץ

input {
beats {
port => 5044
}
}

output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

כעת נתקין את filebeats

curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.1.1-amd64.deb
sudo dpkg -i filebeat-7.1.1-amd64.deb

נגדיר חוק ב FW לפורט 5601 דרכו נכנס למערכת

sudo ufw allow 5601/tcp

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

sudo systemctl enable kibana
sudo systemctl enable filebeat
sudo systemctl enable logstash
sudo systemctl enable elasticsearch

כעת נפעיל את כל האפליקציות

sudo service kibana start
sudo service logstash start
sudo service elasticsearch start

כעת נכנס אל המערכת

https://YourIP:5601

כעת המערכת עלתה

 

Index הם הלוגים המתקבלים מהמערכות השונות, לדוגמה Index של winlogbeat הוא כל מ winlogbeat שולח ל Logstash ומשם ל ElasticSearch

על מנת שנתחיל לקבל נתונים, נוריד תחילה את winlogbeat ואת filebeat העתיקו אותם לשרת שלכם ה Windows Server בו קיים ה IIS

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

Winlogbeat

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

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

cd c:\winlogbeat-7.1.1-windows-x86_64

כעת נתקין את winlogbeat

powershell.exe -ExecutionPolicy Bypass -File install-service-winlogbeat.ps1

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

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

 

כעת בתוך הקובץ הכניסו ל output.elasticsearch והסירו את הסולמית #

#output.elasticsearch

וגם ל hosts: localhost

#hosts: [“localhost:9200”]

הסירו את הסולמית ל

#output.logstash

ומ

hosts: [“IP”]

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

כעת בשורה הזו, הסירו את ה# והגדירו את כתובת הIP של ELK

כעת חזרו ל Powershell והקישו את הפקודה

cd c:\winlogbeat-7.1.1-windows-x86_64

.\winlogbeat.exe setup –dashboards

*ברגע שתבצעו את יצירת הDashboard לא תצטרכו לייצר Index בהמשך שכן הוא כבר נוצר כעת

כעת הכניסו את הכתובת ה IP של ELK שלכם, זה צריך להיראות כמו בתמונה

כעת נפתח את Services.msc ושם נפעיל את השירות winlogbeat

זהו, סיימנו להתקין את winlogbeat, עוד נחזור אליו בהמשך שנרצה להגדיר עוד התראות לעוד Events

FileBeat

כעת אותו דבר נתקין את filebeat

נכנס ל

cd c:\filebeat-7.1.1-windows-x86_64

נתקין את filebeat

powershell.exe -ExecutionPolicy Bypass -File install-service-filebeat.ps1

 

נערוך אותו עם notepad++

 

נבצע את אותה ההגדרה כמו ב winlogbeat

מתוך השורה output.elasticsearch הסירו את הסולמית #

#output.elasticsearch

וגם ל hosts: localhost

#hosts: [“localhost:9200”]

הסירו את הסולמית ל

#output.logstash

ומ

hosts: [“IP”]

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

c:\inetpub\logs\LogFiles\*\*

כעת חפשו בשורה

setup.kibana

מתחת יש את השורה

#host: "localhost:5601"

שנו את הכתובת לכתובת הIP שלכם ואל תשכחו להסיר את #    !!!!

host: "192.168.31.66:5601"

הכוכביות זה בגלל שהלוגים של IIS נמצאים בתוך תיקיות ב logfiles שכל תיקייה כזו יכולה להיות אתר

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

כעת מצאו את השורה

setup.dashboards.enabled: false

שנו ל 

setup.dashboards.enabled: true

נחזור ל Powershell הקישו ב Powershell

.\filebeat.exe modules enable iis

בדקו כי הוא מופעל על ידי הפקודה

.\filebeat.exe modules list

כעת בצעו התקנה

.\filebeat.exe setup -e

כעת נגדיר את ה Dashboards

filebeat setup --dashboards

*ברגע שתבצעו את יצירת הDashboard לא תצטרכו לייצר Index בהמשך שכן הוא כבר נוצר כעת

ולסיום היכנסו לנתיב

C:\filebeat-7.1.1-windows-x86_64\modules.d

ערכו את הקובץ

iis.yml

הכניסו בו את ההגדרות הבאות

- module: iis
  access:
    enabled: true
    var.paths: ["C:/inetpub/logs/LogFiles/*/*.log"]
  error:
    enabled: true
    var.paths: ["C:/Windows/System32/LogFiles/HTTPERR/*.log"]

שמרו וצאו

הפעילו את filebeat

כעת יווצרו לנו Indexes במערכת, נחזור ל ELK

בכדי לקבל את כל הלוגים של winlogbeat נקיש

winlogbeat*

ואז לחצו על Next step

 

כעת בחרו שהפילטר שיסדר את כל הלוגים הוא לפי זמן

ואז לחצו על Create index pattern

כעת לחצו שוב על Create Index Pattern על מנת ליצור Index ל filebeat

 

כעת רשמו 

filebeat*

לחצו הבא ואז סמנו timestamp בדיוק כמו ב winlogbeat

וצרו את ה index,כעת יצרתנו 2 index, לחצו שוב על Discover

כעת יופיע כל הנתונים, מתוך הרשימה ניתן לבחור איזה Log Beat להציג

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

כעת אקיש את כתובת ה IP של השרת IIS שלנו 192.168.31.11 ואכנס אליו

 

כעת אעבור לELK 

 

בחיפוש אקיש את הכתובת ממנה גלשתי ל192.168.31.11 

הכתובת היא 192.168.31.181 ונבדוק אם הכתובת מופיע

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

כעת למטרה הראשית, כעת נכין DashBoard ובו נתונים שמעניינים אותנו

לדוגמה, איפוס סיסמא ב Active Directory, מתי בוצע האיפוס? מי ביצע את האיפוס סיסמא? ולמי ביצעו את האיפוס סיסמא?

כך נוכל ליצר Dashboard שבו נקבל את המידע הזה בקלות.

נפתח את הWindows Server ונפתח את Active Directory, יצרתי משתמש בשם Noy

 

כעת נבצע איפוס סיסמא

כעת אפתח עוד משתמש בשם Liya אבל למשתמש זה לא האפס סיסמא כיוון שיצירת משתמש חדש והגדרת סיסמא למשתמש מוגדר “כאיפוס סיסמא”

נפתח את Event Viewer, ניתן לפתוח את Run ולהקיש eventvwr.msc

ושם נחפש את ה EventID שמספרו 4724 – זה Event שנוצר כאשר למשתמש בוצע איפוס סיסמא

כעת אחזור למערכת ELK ושם אבצע חיפוש ל4724 כעת לחצו על החץ הקטן (מסומן באדום)

אלו כל הנתונים שקיבל הElasticSearch מ Winlogbeat

 

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

זאת על מנת ליצור את ה Dashboard

 

נפתח Notepad חדש ונדביק את הנתונים כמו כאן

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

The User Password Change: winlog.event_data.TargetUserName

Who Change The Password: winlog.event_data.SubjectUserName

When Password Reset: @timestamp

וכעת ניצור את ה Dashboard הראשון שלנו!

נלחץ בצד שמאל על Dashboard ואז add

 

כעת נלחץ על Add New Visualization

כעת על Data Table

 

וכעת על winlogbeat

 

כעת נלחץ על Add Filter ואז נבחר \ נרשום winlog.event_id ואז נבחר is ואת הEvent ID שהוא 4724

 

כעת נגדיר שיוצגו לוגים 15 יום אחורה

כעת בצד שמאל

 

כעת לחצו על Split Rows

ואז הגדירו את כל ההגדרות הבאות, כמובן ש winlog.event_data.TargetUserName זה לפי הלוג שמקודם הוצאנו ואז ב Costum Label כתבתי The User Password Change: 

בסיום לחצו על Play, מסומן באדום

 

כעת נוצר לנו צורה בה יש שם משתמש שלו שונה הסיסמא וכמות הפעמים

כעת נמשיך, בצד שמאל ממש למטה נלחץ על Add Sub-buckets

ואז שוב Split Rows

 

כעת ניצור עוד אחד של winlog.event_data.SubjectUserName שבו אנו מגדירים מי היוזר ששינה את הסיסמא

עכשיו ניצור עוד אחד באותה הדרך  והפעם מתי שונתה הסיסמא

נשמור כעת (מסומן באדום)

 

ניתן שם 

מצויין! יצרנו לוח ראשון לDashboard

 

 

כעת נעבור ל Dashboards

נלחץ על Add

כעת נחפש הלוח שיצרנו

 

נלחץ עליו

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

ניצור Pie במקום Data Table

נכניס את הנתונים הבאים

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

 

הגדרה נוספת שנשאלת הרבה, היא מציאת משתמשים שננעלו בארגון ואיזה מחשב נעל אותם, תשובה לשאלה הנפוצה “למה היוזר ננעל?” ומאיפה?

הEvent ID שאחראי לזה הוא 4740

ואלו 2 ההגדרות שמציגות מי היוזר שננעל ומאיזה תחנה

winlog.event_data.TargetUserName

winlog.event_data.TargetDomainName

כעת ניתן להבחין מי היוזר שננעל

 

וכעת נוסיף מאיזה תחנה

כעת נוסיף אותו ל Dashboard שלנו, והופה!

Packetbeat

הוא כלי לאיסוף נתוני רשת מתוך התחנה, למשל לאיזה כתובת IP התחנה ניגשה, כמה בקשות Http לעומת Https וכו’

נתחיל בהורדה של Packetbeat מכאן והורידו והתקינו את התוכנה winpcap

לאחר שהתקנתם את Winpcap נמשיך, העתיקו את התיקייה של packbeat ל c:

כעת בתוך התיקייה נערוך את packbeat.tml שהוא קובץ ההגדרות (נא לבצע את זה בעזרת notepad++ או כל עורך טקסט אחר)

כעת נוסיף # סולמית לשורות הבאות

#output.elasticsearch:
#hosts: ["localhost:9200"]

נסיר # סולמית מהשורות הבאות

output.logstash:
# The Logstash hosts
hosts: ["192.168.31.66:5044"]

ונכניס את כתובת ה IP של ELK

כעת עוד קצת למעלה הסירו # מהכתובת IP של setup.kibana , ממש כמו בתמונה, והכניסו את הכתובת IP של ELK

כעת ניתן להבחין בכל הפורטים שPacketbeat ינטר, ניתן להוסיף פרוטוקולים משלכם , כל עוד הם ברשימה שלPacketbeat

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

ונתקין את Packetbeat

./install-service-packetbeat.ps1

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

./packetbeat.exe setup --dashboards

כעת נפעיל את packetbeat

על מנת לייצר לוג שבו נכנסו לאתר, נכנסתי לאתר שלי

וברגע שהגדרתי packetbeat והכנסתי בחיפוש shushan.co.il הוא מצא את הלוג

כעת עברתי לDashboards ושם הכנסתי 2 לוחות שהם ברירת מחדל והגיעו בהתקנה שבצענו

למשל כמה בקשות http וכמה בקשות DNS בוצעו

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Leave a Comment