מעבדה נוספת לאחר סיום המעבדה הזו:
הסבר על 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