במאמר זה אסביר כיצד עובד ELK מהם הכלים בתוכו וכיצד נשתמש בו.
ישנו מאמר נוסף הגדרה והתקנה על ELK 6.X על Ubuntu 20.04
תחילה הסבר על המערכת:
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 7.X על Ubuntu 18.04
תחילה נבצע את ההתקנה ולאחר ההתקנה אסביר על הפעולות אותם ניתן לבצע ב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 ufw allow 9200/tcp
sudo ufw allow 5044/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
כעת נכנס אל המערכת
http://YourIP:5601
כעת המערכת עלתה
Index הם הלוגים המתקבלים מהמערכות השונות, לדוגמה Index של winlogbeat הוא כל מ winlogbeat שולח ל Logstash ומשם ל ElasticSearch
על מנת שנתחיל לקבל נתונים, נוריד תחילה את winlogbeat ואת filebeat העתיקו אותם לשרת שלכם ה Windows Server בו קיים ה IIS
ברגע שהורדתם את הכלים, חלצו אותם לכונן C
Winlogbeat
כעת פתחו Powershell עם הרשאות מנהל
נכון לכתיבת שורות אלו גרסה 7.1.1 היא זו שהופצה וכעת יצאה גירסה 2.0
אין בעיה לעבוד עם 2.0, רק התאימו את השמות של התיקייה ל2.0
הקישו את הפקודה, על מנת להכנס לתיקייה שחילצתם, אם הגירסה שונה שנו את הפקודה בהתאם
cd c:\winlogbeat-*
כעת נתקין את 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"]
במקום ה IP של output.logstash הזינו את הכתובת IP של הELK
נגדיר ל winlogbeat להתקין את הפאנל ברירת המחדל, כך שהנתונים יוצגו בצורה ויזואלית יותר
כעת בשורה הזו, הסירו את ה# והגדירו את כתובת הIP של ELK
כעת חזרו ל Powershell והקישו את הפקודה
cd c:\winlogbeat-7.1.1-windows-x86_64
.\winlogbeat.exe setup –dashboards
*ברגע שתבצעו את יצירת הDashboard לא תצטרכו לייצר Index בהמשך שכן הוא כבר נוצר כעת
יש להוסיף # ל output.elastic search ול hosts שלו
כעת הכניסו את הכתובת ה 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 בוצעו
כל הזכויות שמורות לטל בן שושן – Shushan.co.il
2 comments
וואו. שאפו!
תודה !